小编典典

从页面导航时如何处理jQuery Ajax发布错误

ajax

有没有一种方法可以处理来自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似乎不再支持它。例如,在这种情况下是否返回特定错误?

谢谢。


阅读 179

收藏
2020-07-26

共1个答案

小编典典

看起来这的答案是检查jqXHR.status。在XMLHttpRequest的规范概述了这些步骤设置状态:

状态 属性必须返回运行这些步骤的结果:

  1. 如果状态为未发送或已打开,则返回0并终止这些步骤。

  2. 如果设置了错误标志,则返回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

2020-07-26