2013-02-21 184 views
2

搜索並瀏覽論壇,並嘗試了許多Ajax和表單提交的例子,但無法爲我想實現的目標獲得任何接近工作的東西。我必須承認,我一直在這個圈子裏呆了幾天,需要一個擁有一雙新鮮眼睛的人。Ajax表單提交,驗證並返回成功或失敗

我有2頁: page1.php中 使page2.php

使用谷歌的jQuery/1.9.0 /的jquery.js和本地開發這個。

是page1.php中如下(我省略了頭腳本和清晰度身體/ html標籤)

$(document).ready(function() { 
$('#theForm').submit(function(){ 
$.ajax({ 
     type: "POST", 
     url: "page2.php", 
     data: 'html', 
    success: function(html){ 
     if(html == 'success'){ 
     $('#address').fadeOut('slow'); 
     $('#done').fadeIn('slow'); 
    }else if(html == 'fail'){ 
     alert('fail'); 
    } 
} 
}); 
return false; 
}); 
}); 

<div id="address"> 
<form action="page2.php" method="post" name="theForm"> 
<input name="checkname" type="text" id="checkname"> 
<input name="Proceed" type="submit" id="submit" value="Next Page" /> 
</form> 
</div> 
<div id="done"> 
That Worked! 
</div> 

使page2.php 擁有MySQL查詢,檢查數據庫的檢查名相呼應'成功'或'失敗'取決於結果。查詢運行良好,並沒有顯示任何錯誤。

當表單被提交時,page2.php加載並在瀏覽器中顯示'成功'。 Firebug也在響應和html下顯示成功。螢火蟲內沒有錯誤。

我基本上要到page1.php中留下了#address div來掩蓋和#done DIV成功時,從使page2.php

希望有人能幫助傳遞顯現。

更新 我想這個測試頁面:

ajaxone.php

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.js"></script> 
<script type="text/javascript"> 
$(document).ready(function() { 
$('#theForm').submit(function(){ 

$.ajax({ 
type: "POST", 
url: "ajaxtwo.php", 
data: 'html', 
success: function(html){ 
    if(html == 'success'){ 
     $('#address').fadeOut('slow'); 
    $('#payment').fadeIn('slow'); 
     alert('ok'); 
    }else if(html == 'fail'){ 
     alert('fail'); 
    } 
} 
}); 
    return false; 
}); 
}); 
</script> 
<style type="text/css"> 
#payment{ 
visibility:hidden; 
} 
</style> 

<div id="address"> 
<form action="ajaxtwo.php" method="post" name="theForm" id="theForm"> 
<p> 
    <input name="name" type="text" id="name"> 
</p> 
    <p> 
    <input type="submit" name="submit" value="submit"> 
</p> 
</form></div> 
<div id="payment">Name is correct</div> 

ajaxtwo.php

print_r($_POST); 
if($_POST['name'] == 'rob'){ 
echo 'success'; 
}else{ 
echo 'fail'; 
} 

使用上面的螢火蟲顯示以下錯誤:

陣列() 未定義指數:命名 失敗

然而,當我刪除AJAX調用提交作品和數據傳遞。 那麼,我是否正確地認爲,如果您沒有在ajax調用中指定表單變量,則什麼都不會發布到下一頁?

更新2 對不起,我在這裏回答我自己。 它似乎確實需要指定要在ajax調用中發送的表單數據。 我剛說:

$('#theForm').serialize(); 
Ajax調用內

現在的形式提交沒有錯誤。 但是,這仍然是ajaxtwo.php,並沒有顯示在ajaxone.php頁面上成功或失敗。 所以我的下一個階段是成功或未能在ajaxone.php上顯示

回答

0

您需要在表單標籤本身中添加id="theForm"

例子:

<form action="page2.php" method="post" id="theForm" name="theForm"> 
+0

剛剛嘗試,但仍然沒有喜悅 - 謝謝你試圖幫助,雖然 – Rob777 2013-02-21 21:44:44

-1

我會說,加,然後進行JQ讀取輸出,然後相應地重定向,或者使用PHP基於$ success_fail結果redict。

+0

我會說,添加一個

,然後讓jq讀取輸出,然後相應地重定向,或使用PHP來基於$ success_fail結果redict。 – Fred 2013-11-17 19:55:09