2012-10-21 71 views
0

我在我的網站上有密碼更改功能,現在一切都完成了,除了我想顯示成功或失敗消息。因此,這裏是我的html:
AJAX完全響應

<form id="change_Pass" action="" method="post"> 
    //stuff 
</form> 
<fieldset id="response_field_pass" style="display:none;"><p style="color:black;"></p></fieldset> 

而且我的jquery:

$('#change_Pass').submit(function() { 
    if(pass_val.form()) { 
     $.ajax({ 
      type: "POST", 
      url: "script.php", 
      complete: function(data) { 
       $('#response_field_pass').show(); 
       $('#response_field_pass >p').text(data); 
       if(data) alert("success"); 
       else alert("fail"); 
      } 
     }); 
    } 
    return false; 
}); 

的PHP腳本回聲truefalse所以當成功我收到一個警告框,上面寫着成功。這很棒。但字段集沒有顯示,也不應該在<p>內部顯示。它基本上只是跳過:

$('#response_field_pass').show(); 
$('#response_field_pass >p').text(data); 

然後轉移到警報。任何想法爲什麼它不隱藏字段集?

回答

1

我懷疑它是否會跳過你提到的幾行。大多數情況下,fieldset中的段落沒有任何可顯示的內容,因爲complete處理程序的第一個參數是jqXHR對象,而不是您從服務器收到的數據。爲了解決我建議這個問題你使用success處理程序來代替:

$.ajax({ 
    type: "POST", 
    url: "script.php", 
    success: function(data) { 
     // ... 
    } 
}); 

success函數的第一個參數是data這是從服務器返回。

要處理可能的請求錯誤,您可以使用error處理程序。它接收三個參數:jqXHR對象,一個描述發生的錯誤類型的字符串,以及一個可選的異常對象(如果發生的話)。

+0

但是成功了嗎?如果失敗會怎樣?我只希望它在ajax完成後顯示腳本的響應。 –

+0

@JohnBernal如果請求失敗,您需要處理'error'回調。否則,要從服務器獲取數據,您應該使用'success'處理程序,因爲只有在數據傳輸成功的情況下才能通過數據。 – VisioN

+0

所以我現在已經[this](http://pastie.org/5095564),但fieldset仍然不會顯示,但警報消息會。任何想法爲什麼節目沒有被解僱? –