我广泛使用$ .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,它没有收到错误。