2011-03-25 34 views
0

這讓我頭痛,再次。我根本不明白這個ajax響應的東西,或者它編碼不好。無法從jquery/ajax得到回覆

讓我們建立一個極其簡單例如一起工作:

register.php:

<?php 
echo 'I want some response !!'; 
?> 

Ajax調用:

$.ajax({ 
url: '/register.php', 
type: 'POST', 
data: $('#form-registracia').serializeArray(), 
success: function(e){ 
    var response = e.responseText; 
    alert(response); 
} 
}); 

警告說不確定。爲什麼?我嘗試了幾個小時,現在閱讀jQuery網站,沒有任何幫助。我確信PHP文件得到執行,並且回顯被髮送回ajax。

在此先感謝!

+0

我建議與'console.log'一起使用firebug。您可能還想設置一個錯誤處理程序,以防萬一您從服務器收到404或403錯誤。 – zzzzBov 2011-03-25 20:16:41

+1

您是否曾嘗試將成功功能「e」的參數放在警報中而不是「響應」中?也許這是問題^^ – 2011-03-25 20:16:58

回答

0

你得到未定義,因爲從服務器返回的響應包含在e中,而不是e.responseText。 responseText是XHR對象的一個​​屬性,但是jQuery將爲你封裝並在response方法中提供responseText作爲參數。

所以在短,它更改爲這樣:

成功:函數(E){ VAR響應= E; alert(response); }

0

「成功」的說法是迴應文本本身;你問一個String作爲它的responseText成員,這確實是未定義的。直接使用參數。

成功函數有三個參數形式,其中最後一個參數是您正在尋找的XHR對象。

0

嘗試警報(e)。你不發送一個對象,所以e沒有屬性responseText(這只是純文本)。如果您希望在瀏覽器中看到請求,請使用fiddler或firebug查看請求和響應標頭。

0

你需要閱讀jQuery api好一點:

success(data, textStatus, jqXHR)Function, Array

的函數,如果請求成功被調用。該函數傳遞三個參數:從服務器返回的數據,根據dataType參數進行格式化;描述狀態的字符串;和jqXHR(在jQuery 1.4.x,XMLHttpRequest)對象中。從jQuery 1.5開始,成功設置可以接受一系列函數。每個函數都會依次調用。這是一個Ajax事件。

成功回調中的第一個參數是您的數據。你應該輸入alert(e)