$ .ajaxError如何工作?

And*_*rew 3 jquery

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

$(document).ajaxError(function (e, xhr, options, error)
{
    console.log(e);
    console.log(xhr);
    console.log(options);
    console.log(error);
});
Run Code Online (Sandbox Code Playgroud)

我也试过把它放在我的脑子里$(document).ready()..然后我禁用了我的网络连接.从POSTAJAX中的定时时间开始出现了一系列错误(因为它们得到了意想不到的响应),而且它们GET瞬间恢复(缓存),但Firebug中没有出现任何其他内容,就好像ajaxError从未被调用过一样.我究竟做错了什么?我只是再次尝试没有控制台日志,只是alert('foo')没有发生任何事情.很多错误,但ajaxError永远不会解雇.

ajm*_*ajm 6

ajaxError当实际的XHR没有从服务器的给定响应中收到HTTP成功代码时触发,正如您在jQuery源中看到的那样.该特定功能中的响应代码被视为"成功"代码; 其他任何事情都是失败的.

jQuery也只分支到ajaxError当你的XMLHTTPRequest结束readyState为4 时触发的代码(完成所有收到的数据),所以我认为关闭你的网络连接实际上会让你完全处于不同的XHR状态(可能是一个条件循环) 2?).你也可以看到jQuery如何在源代码中分支.

基本上,它看起来服务器没有说请求失败并发回一个超出上述范围的代码,你可能不会看到ajaxError被触发,根据jQuery,它没有收到错误.