0

我在 jQuery 1.10.1 中看到,如果$.ajax在页面卸载发生时(例如,由于用户单击链接或重新加载页面)正在进行请求,则会error:调用回调。

在 jQuery 2.0.0 或 2.0.2 中似乎并非如此。这太棒了。

SO上至少有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 Released”公告中没有看到任何与此相关的内容。

我可以依靠这个被修复/改变还是这是一个可能依赖于浏览器的事故或其他什么?它似乎至少在 Chromium 和移动 Safari (iPad) 中得到了修复。

我正在寻找修复的来源,因此我可以查看是否可以让 1.x 停止调用错误处理程序,或者至少在错误回调中检测这是否是由于用户操作/导航造成的。特别是因为到目前为止我见过的最好的解决方案是在回调beforeunload时检测页面卸载。error:问题是,这beforeunload在移动 safari 中不起作用

FWIW:我正在 Ubuntu linux 12.04 上进行测试。

已编辑:删除声称它也为 Firefox 修复的声明。它不是。

4

0 回答 0