2011-11-20 53 views
2

這對我來說是一個令人困惑的問題。當我運行ajax請求時,它總是返回一個錯誤,但是檢查responseText中的數據實際上是我需要的數據。那麼爲什麼它會出現錯誤?jQuery Ajax錯誤響應包含成功響應

$.ajax({ 
    type: "GET", 
    url: "/getjson.php?name=jay", 
    dataType: "json", 

    success: function(msg){ 
      alert(msg); 
    }, 
    error: function(msg) { 
      alert("Error: " + msg.responseText); 
    } 

    }); 
+0

我們可能需要看到你的PHP代碼能夠辨別出這一點。另外,如果你在chrome developer tools/firebug中打開網絡標籤,你會收到什麼響應頭文件? –

回答

1

返回的HTTPStatus代碼是什麼jQuery使用來確定要調用的處理程序。

如果代碼在200範圍內(200 - 299)或304,則將調用成功回調函數,否則將調用錯誤回調函數。

而且,如果jQuery的失敗解析響應,它被視爲錯誤(例如,如果返回HTML時JSON預計,錯誤回調會被調用)

+0

是的,它是200.這是什麼讓人困惑。 – GV1

+0

現在回答更新錯誤回調被調用的替代原因。 –

+0

這是最好的解決方案是什麼?我真的不想訴諸解析錯誤中的json響應。一旦代碼在生產中,我無法控制json,只能在我的開發服務器上進行測試。 – GV1

0

改變你的錯誤FUNC按鍵

error: function(jqXHR, error_textStatus, errorThrown) 

,並檢查這些:

jqXHR.readyState  
jqXHR.status  // <=== specially this   
jqXHR.statusText   
jqXHR.responseText 
+0

readyState = 4,status = 200,statusText = OK,responseText =我應該獲得成功的迴應。 – GV1

+0

難道是因爲JSON包含反斜槓? – GV1

+0

errorThrown給我:SyntaxError:意外的令牌: – GV1