2012-06-23 119 views
0

以下幾段代碼在除IE之外的所有內容中都很適用。在IE中,data.responseText的警報說未定義。但在所有其他瀏覽器中,它會返回正確的數據。jquery ajax responseText不能在ie9中工作

我錯過了什麼?它適用於Firefox,Chrome,Safari等。

如果我將data.responseText更改爲只是數據,我得到[object Object]

$.ajax({ 
    type: "POST", 
    url: "", 
    data: "command=loadComments&id=" + song_id, 
    dataType: "html", 
    complete: function(data) { 
     loading.fadeOut('slow'); 

     $("#comments-list").fadeIn('slow', function() { 
      $("#comments-list").html(data.responseText); 
      alert(data.responseText); 
     }); 
    } 
}); 
+0

嘗試數據= eval(數據)..第一行在功能...並改變完成成功.. –

回答

1

使用success作爲原因可能是它在IE中引發錯誤。還要添加一個error回調來檢查問題是什麼。例如,文本編碼是AJAX調用中常見的僅限IE的錯誤。

+0

好吧,錯誤回調它說「無效參數」 – Mike

+0

嘗試使用'url:「./ 「'而不是空字符串。 – matt3141

+0

感謝您的幫助matt3141。通過更新url,不會引發錯誤,但現在甚至不會引發成功(因爲loading.fadeOut不再發生)。在其他瀏覽器中仍然有用。 – Mike

1

相反的.complete()可以用.success()功能嘗試。

CODE

success: function(data){ 
     loading.fadeOut('slow'); 
     $("#comments-list").fadeIn('slow', function() { 
      $("#comments-list").html(data.responseText); 
      alert(data.responseText); 
     }); 
    } 

從jQuery的DOC:

成功(數據,textStatus,jqXHR)

函數。如果請求成功被調用。該函數傳遞三個參數:從服務器返回的數據 ,根據dataType 參數進行格式化;描述狀態的字符串;和jqXHR(jQuery 1.4.x,XMLHttpRequest)對象。

完整(jqXHR,textStatus)

甲功能的請求完成(成功後和 錯誤回調被執行)時被調用。該函數獲得兩個參數: jqXHR(在jQuery 1.4.x中,XMLHTTPRequest)對象和字符串 將請求狀態(「成功」,「未修改」, 「錯誤」,「超時」,「中止「或」parsererror「)。

+0

但這似乎不回答爲什麼? 'responseText'是'jqXHR'的一個屬性。 – xdazz

+0

@xdazz我知道,先生,但'成功()'是可靠的,然後'完整()',並沒有問題與不同的瀏覽器 – thecodeparadox