$ .ajax似乎没有调用错误:jQuery 2.x中的回调,例如由于页面重新加载。 太棒了! 但为什么?
我在jQuery 1.10.1中看到,如果在页面卸载时发生$.ajax
请求(例如由于用户单击链接或重新加载页面),则会调用error:
callback。
在jQuery 2.0.0或2.0.2中似乎不是这种情况。 这太棒了 。
至少在这里有7个问题,关于error:
在导航时被调用。 例如, 当用户单击刷新时处理ajax错误
看到这个jsfiddle – 它开始运行1.10.1,但你可以在左边的控件中将它改为2.0.2。 实质上:
$.ajax({ type: "POST", url: "/echo/json/", data: { json: JSON.stringify({ a: 23 }), delay: 30 }, cache: false, success: function (json) { $('#result').text(JSON.stringify(json)); }, error: function () { alert("error callback called"); } });
注意如何显示1.10.1的警报,但不显示2.0.2的警报。
但是,我没有在“jQuery 2.0发布”声明中看到任何相关内容。
我可以依赖于这个被修复/更改,还是这可能是依赖于浏览器的事故? 它似乎至少在Chromium和移动Safari(iPad)中得到了修复。
我正在寻找修复的来源,所以我可以看到我是否可以获得1.x来停止调用error handling程序或至少检测错误回调是否这是由于用户操作/导航。 特别是因为我到目前为止看到的最佳解决方案是使用beforeunload
来检测error:
时的页面卸载error:
回调。 问题是, beforeunload
在移动safari中不起作用 。
FWIW:我正在Ubuntu linux 12.04上测试。
编辑 :删除声称它也已修复为Firefox。 事实并非如此。