有没有一种方法可以处理来自JQuery中ajax请求的错误,以便当用户离开页面导航时,所产生的错误将被忽略?
$(document).ready(function() { $.ajax( { url:'/server/url/', type: 'POST', data: {some..data}, success:function(response) { do stuff with response }, error: function(xhr, textStatus, errorThrown) { // Don't raise this alert if user has navigated away from the page alert('error'); } });
我很好奇是否有人知道一种干净的方法来处理此问题?我知道您可以在一种$(window).bind("beforeunload", function(){})方法中创建一些逻辑,但是我更喜欢是否有一种方法可以解决这种情况,因为Chrome似乎不再支持它。例如,在这种情况下是否返回特定错误?
$(window).bind("beforeunload", function(){})
谢谢。
看起来这的答案是检查jqXHR.status。在XMLHttpRequest的规范概述了这些步骤设置状态:
该 状态 属性必须返回运行这些步骤的结果: 如果状态为未发送或已打开,则返回0并终止这些步骤。 如果设置了错误标志,则返回0并终止这些步骤。 3. 返回HTTP状态代码。1个
该 状态 属性必须返回运行这些步骤的结果:
如果状态为未发送或已打开,则返回0并终止这些步骤。
如果设置了错误标志,则返回0并终止这些步骤。
3. 返回HTTP状态代码。1个
另请注意:错误标志指示某种类型的网络错误或请求中止。最初未设置,并在DONE状态期间使用。
因此,据我了解,此代码检查应解决以下问题:
if (xhr.status == 0) alert('error');
1 https://web.archive.org/web/20120204040047/http://www.w3.org/TR/XMLHttpRequest/#the- status- attribute