5

我正在使用以下代码将数据从服务器异步拉入客户端。错误块中的警报报告服务器上发生的错误。但是,如果用户在调用过程中离开页面页面,这个块也会被触发并抛出一个空的警报容器。有什么方法可以更优雅地处理用户离开页面(即在他们离开之前不抛出空警报)?也许通过区分用户已经离开的错误块,而不是服务器上发生的错误?

$.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);
    }
});
4

2 回答 2

4

尝试...

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

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

于 2013-08-01T00:17:20.550 回答
1

问题解决了..

我设置了一个全局变量:

var unloadingState = false;

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

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

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

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

是的,警报很丑陋,不应该使用!

于 2013-03-11T11:15:38.110 回答