离开页面时出现JQuery Ajax错误

时间:2013-03-10 19:39:22

标签: jquery asynchronous error-handling

我使用以下代码将数据从服务器异步拉入客户端。错误块中的警报报告服务器上发生的错误。但是,如果用户在呼叫期间离开页面页面,则此块也会被触发并抛出一个空的警报容器。有没有办法处理用户更优雅地离开页面(即在他们离开之前不要抛空警报)?也许通过区分用户导航的错误块,而不是服务器上发生错误?

$.ajax({
    type: "GET",
    url: "/handlers/myHandler.ashx",
    async: true,
    dataType: "json",
    data: "var1=test_val&var2=test_val"
    success: function (invoices) {
       //Success block
    },
    error: function (XMLHttpRequest, textStatus, errorThrown) {
        alert(errorThrown);
    }
});

2 个答案:

答案 0 :(得分:4)

...试

if (xhr.status != 0)
  alert(thrownError);

...其中xhr是您的XMLHttpRequest变量

答案 1 :(得分:1)

问题解决了..

我设置了一个全局变量:

var unloadingState = false;

然后一个beforeunload事件句柄(感谢Dave!),修改变量:

$(window).bind("beforeunload", function () {
    unloadingState = true;
});

最后是ajax方法的错误块中的交叉引用:

error: function (XMLHttpRequest, textStatus, errorThrown) {
  if (!unloadingState) {
    alert(errorThrown);
  }
}

是警报很难看,不应该使用!