2011-05-04 84 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