离开页面时出现JQuery Ajax错误
我使用以下代码将数据从服务器异步拉入客户机。错误块中的警报报告服务器上发生的错误。但是,如果用户导航到页面中间调用之外,此块也会被激发并抛出一个空警报容器。是否有任何方法可以更优雅地处理用户离开页面时发出的警告(即在用户离开前不抛出空警报)?可能是通过区分用户导航离开的错误块,而不是服务器上发生的错误离开页面时出现JQuery Ajax错误,jquery,asynchronous,error-handling,Jquery,Asynchronous,Error Handling,我使用以下代码将数据从服务器异步拉入客户机。错误块中的警报报告服务器上发生的错误。但是,如果用户导航到页面中间调用之外,此块也会被激发并抛出一个空警报容器。是否有任何方法可以更优雅地处理用户离开页面时发出的警告(即在用户离开前不抛出空警报)?可能是通过区分用户导航离开的错误块,而不是服务器上发生的错误 $.ajax({ type: "GET", url: "/handlers/myHandler.ashx", async: true, dataType: "jso
$.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);
}
});
问题解决了
我设置了一个全局变量:
var unloadingState = false;
$(window).bind("beforeunload", function () {
unloadingState = true;
});
然后使用beforeunload
事件句柄(谢谢Dave!)修改变量:
var unloadingState = false;
$(window).bind("beforeunload", function () {
unloadingState = true;
});
最后是ajax方法错误块中的交叉引用:
error: function (XMLHttpRequest, textStatus, errorThrown) {
if (!unloadingState) {
alert(errorThrown);
}
}
是的,警报很难看,不应该使用 试试
if (xhr.status != 0)
alert(thrownError);
…其中xhr是XMLHttpRequest变量1),您应该使用HTML元素来报告失败,而不是警报(这是一种非常古老和丑陋的信息提供方式)。2) 您可以尝试在页面中添加
unload
或beforeunload
的钩子,该页面设置了一个变量来防止错误,但我不知道事件的顺序是否正确。3) 如果消息是空的,您可以简单地避免显示消息。谢谢,我也同意,在我们应用程序的早期,为了方便起见使用了“警报”。我将调查这些事件。您是否忘记在javascript代码中添加if(!unloadingState){
?