检测到jQuery.ajax调用失败,因为页面正在重新加载?

kdt*_*kdt 11 ajax jquery

我做了很多$ .ajax调用,我以一种抛出消息的方式处理它们的错误.我发现如果在页面重新加载时正在进行ajax调用,例如单击刷新,或导航到另一个URL,那么我正在进行的ajax调用会触发它们的错误回调.

如何区分真实错误和因重新加载页面而中止的调用之间的区别?

$.ajax(...)
.success(...)
.error(function(jqXHR) {
  // jqXHR.status == 0 means either failed to contact server,
  // or aborted due to page reload -- how can I tell the difference?
});
Run Code Online (Sandbox Code Playgroud)

Rob*_*b W 12

添加一个unload处理程序,将标志设置为true.然后,在error处理程序内部,您可以检查此标志,并执行适当的操作.

例:

var unloading = false;
$.ajax(...) ...
 .error(function(jqXHR) {
    if (unloading) return; // Ignore errors caused by navigating away
    // Now, check for real errors ..
});
$(window).unload(function() {unloading = true;});
Run Code Online (Sandbox Code Playgroud)

  • 这种方法对我有用,但我不得不将错误处理程序体放在`setTimeout(function(),250)中,因为错误处理程序在window.unload()函数之前触发 (3认同)