我广泛使用$ .get,$。post和$ .getJSON,所以我想看看.ajaxError是如何工作的。我试过了

$(document).ajaxError(function (e, xhr, options, error)
{
    console.log(e);
    console.log(xhr);
    console.log(options);
    console.log(error);
});


并且我还尝试将其放入我的$(document).ready().中。然后我禁用了网络连接。 AJAX中的定时POST冒出了很多错误(因为它们得到了意外的响应),并且GET瞬间返回(缓存),但是Firebug中没有其他内容,就像ajaxError从未出现过一样被呼叫。我究竟做错了什么?我只是在没有控制台日志和alert('foo')的情况下再次尝试,再次没有任何反应。错误很多,但ajaxError从未触发。

最佳答案

当实际的XHR没有从服务器as you can see in the jQuery source的给定响应中收到HTTP成功代码时,将触发ajaxError。该特定功能中的响应代码被视为“成功”代码;其他一切都是失败。

jQuery仅分支到XMLHTTPRequest的ajaxError为4时触发readyState的代码(完成所有接收到的数据),因此我认为关闭网络连接实际上将使您完全处于不同的XHR状态(可能是条件2的循环?)。 You can see how jQuery branches in the source, too

基本上,它看起来服务器是否没有说请求失败并发送了超出该范围的代码,您可能不会看到ajaxError被触发,因为根据jQuery,它没有收到错误。

09-27 09:40