I want to have a global error handling method for ajax calls, this is what I have now:

$.ajaxSetup({
  error: function (XMLHttpRequest, textStatus, errorThrown) {
    displayError();
  }
});

我需要忽略aborted的误差.errorThrown为空,textStatuserror.我怎么才能查到aborted美元呢?

推荐答案

今天我不得不处理同样的用例.我正在开发的应用程序有这些长时间运行的ajax调用,这些调用可能会被1)用户导航离开或2)某种临时连接/服务器故障中断.我希望错误处理程序仅在连接/服务器故障时运行,而不是在用户离开时运行.

我第一次try 了Alastair Pitts的答案,但没有成功,因为中止的请求和连接失败都将状态码和readyState设置为0.接下来,我try 了西普的答案;也不起作用,因为在这两种情况下,没有给出响应,因此没有标题.

对我来说唯一有效的解决方案是为Windows设置一个侦听器.onbeforeunload,它设置一个全局变量来指示页面已被卸载.然后,只有在页面尚未卸载时,错误处理程序才能判断并调用错误处理程序.

var globalVars = {unloaded:false};
$(window).bind('beforeunload', function(){
    globalVars.unloaded = true;
});
...
$.ajax({
    error: function(jqXHR,status,error){
        if (globalVars.unloaded)
            return;
    }
});

Jquery相关问答推荐

从克隆的输入中读取数据属性,返回初始输入的值

ASP.NET MVC - Ajax 将空值传递给控制器

如何使用 jQuery 强制悬停状态?

如何在 jQuery 中 Select 特定的表单元素?

如何用 javascript/jquery 替换 url 参数?

jQuery从下拉列表中删除一个选项,给定选项的文本/值

如何使用 jQuery 重置 jquery Select 的 Select 选项?

可以在不使用for=id的情况下将标签与复选框相关联吗?

基于垂直滚动的jquery添加/删除类?

如何使div全屏?

如何在 Jquery 中将 delay() 与 show() 和 hide() 一起使用

jQuery Select 器中前导冒号的目的是什么?

如何签入用户已在 Google recaptcha 中选中复选框的 js?

.apply jQuery 函数是什么?

从客户端的对象数组中获取最新日期的优雅方法是什么?

将十六进制转换为 RGBA

如何以编程方式触发 ngClick

fancybox2 / fancybox 导致页面跳转到顶部

Jquery 日期 Select 器 z-index 问题

jQuery:通过 .attr() 添加两个属性;方法