当前位置: 首页 > 面试题库 >

jQuery Ajax错误处理可忽略中止

松茂实
2023-03-14
问题内容

我想为ajax调用提供一种全局错误处理方法,这就是我现在所拥有的:

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

我需要忽略的错误abortederrorThrown为null,textStatuserror。我该如何检查aborted


问题答案:

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

我首先尝试了Alastair
Pitts的答案,但是由于中止的请求和连接失败都将状态代码和readyState设置为0,所以它不起作用。也没有用,因为在两种情况下都没有给出响应,因此没有报头。

对我有用的唯一解决方案是为window.onbeforeunload设置一个侦听器,该侦听器设置一个全局变量以指示该页面已被卸载。然后,错误处理程序可以检查并仅在页面尚未卸载时才调用错误处理程序。

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


 类似资料:
  • QueryList遵循将业务与错误分离的原则, HTTP请求传输过程中如果出现的错误,QueryList将会抛出异常。 QueryList的HTTP客户端基于GuzzleHttp,它提供了丰富的HTTP异常类型,用户可以自行设计根据不同的异常类型做不同的处理。 如果你觉得麻烦,并不想每次都去处理HTTP异常,选择直接忽略,让程序继续运行下去,做法可以参考下面方式: 对内置的get()进行封装: u

  • 问题内容: 我有一个Dockerfile。生成映像时,由于以下错误而生成失败: 这实际上是无害的。该库可以很好地构建,但是Docker在收到此错误后会停止构建。有什么办法可以指示Docker忽略这一点? 问题答案: 当然。Docker只是响应shell脚本中返回的错误代码。如果您有以下内容: 您可以将其替换为: 这将始终返回(成功)退出代码。这里的缺点是,你的形象将出现,成功地构筑即使 是 在构建

  • 我有一个批处理作业,我想每分钟运行一次。调度程序按计划每分钟启动一次作业,但在第一次启动后,将使用同一个作业实例。在我的ItemReader中有一个标志,一旦代码执行一次就会被触发,因此在每次后续启动中使用同一个实例时,在第一次运行之后不会读取任何新的内容。 我查看了docs(http://static.springsource.org/spring-batch/reference/html/co

  • 主要内容:自签名证书错误,Maven依赖关系,接受自签名证书通常,开发人员将在本地机器上或项目的开发阶段使用自签名证书。 默认情况下,HttpClient(和Web浏览器)不会接受不可信的连接。 但是,可以配置以允许不可信的自签名证书。 注意:这是一个可能存在安全风险,因为您将其用于生产时,基本上会禁用所有的认证检查,这可通导致受到攻击。 在这个例子中,我们演示了如何忽略Apache HttpClient 4.5中的SSL / TLS证书错误。 自签名证书

  • 问题内容: 我有一些使用Eclipse和Java 6 SDK编写的Java代码,因此实现接口的方法都带有注释-Java 6中是合法的注释,而Java 5中不是。 我想使用Java 5 SDK(在Mac OS X 10.5上)编译相同的代码。除注释外,所有内容均可编译并正常运行。有什么方法可以让javac忽略此项目的注释,还是唯一删除所有注释的解决方案? 问题答案: 显然,您可以升级到Java 1.