我做了很多$.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? });
解决方法
添加一个
unload
处理程序,它将一个标志设置为true.然后,在错误处理程序中,您可以检查此标志,并做适当的操作.
例:
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;});