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