2011-05-04 125 views
2

如何使所有狀態代碼都成功*觸發?jQuery ajax與非200響應

$.ajax({ 
    url: "/" 
    , dataType: 'json' 
    , type: 'POST' 
    success: function (data) { 
     alert('all good'); 
    } 
}); 

*注意到我不在乎,如果它的「成功」方法火災,我只是想有解析爲JSON響應實體。

對於400,我的響應實體可能是一些JSON,詳細說明它爲什麼是錯誤的請求,是否有一些設置使jQuery可以開箱即用?或者我必須手卷這個?

感謝

回答

4

使用complete: function() { },而不是success。在這種情況下,產生的數據將不會被jQuery的解析,但你可以通過執行$.parseJSON()做自己XHR對象的responseText

$.ajax({ 
    url: "/" 
    , dataType: 'json' 
    , type: 'POST' 
    complete: function (xhrObj) { 
     var data = $.parseJSON(xhrObj.responseText || ""); 
     alert('all good'); 
    } 
}); 
+0

了'complete'回調犯規獲得雖然傳遞的數據參數。我必須手動解析xhr對象的響應實體嗎? – 2011-05-04 13:40:44

+0

@Andrew:只是補充說 - 是的,你這樣做。 – 2011-05-04 13:41:59

+0

太棒了,歡呼:) – 2011-05-04 13:47:30