gpt4 book ai didi

javascript - 在 $.ajax 回调中,如何区分无法访问的服务器和正在离开的用户?

转载 作者:行者123 更新时间:2023-11-29 15:49:51 25 4
gpt4 key购买 nike

情况:

您向服务器发出了几个仍在运行的 $.ajax 请求。它们都出错了 xhr.status === 0 和 xhr.readyState === 0。

可能的原因:

  • 服务器已关闭(编辑:无法访问 - 没有返回 header 或任何内容)。
  • 用户点击链接/刷新页面/否则导航离开。

我想在第一种情况下弹出一个对话框,但忽略第二种情况。如何在我的完整方法中区分这两者? complete 方法在 $(window).unload 事件之前触发,所以我不能用它来确定用户是否点击离开。我也可以使用 setTimeout 来尝试等待下一页加载,但那很脏。还有什么我可以做的吗?

最佳答案

(这个答案是另一个答案的摘要,为了清楚起见,应 OP 的要求)
如果窗口级别标志不起作用,则在 $(window).unload 之前要测试的下一个 dom 级别事件是 window.onbeforeunload。这是一个可行的选择吗?

围绕您的 AJAX 方法:

var running = true;
// do this only once!!!
var _obunload = ( window.onbeforeunload )? window.onbeforeunload: function(){};
window.onbeforeunload = function()
{
_obunload.call( window );
running = false;
}
xhr.onreadystatechange = function()
{
if( !xhr.status && !xhr.readyState && running )
{
// warning! warning! danger Will Robinson!
// there was a server error
}
else if( !xhr.status && !xhr.readyState )
{
// user did something... Who gives?
}
running = false;
}

关于javascript - 在 $.ajax 回调中,如何区分无法访问的服务器和正在离开的用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6977870/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com