【问题标题】:Detect Ajax request interrupted by user action检测被用户操作中断的 Ajax 请求
【发布时间】:2012-07-05 09:50:55
【问题描述】:

我想检测 Ajax 调用正在进行中然后由于某些用户操作(例如,用户导航到另一个页面)而中断的情况?

我可以看到,当这种情况发生时,我的 onreadystatechange 处理程序会以 readyState == 4 (DONE) 和 status == 0 调用。

问题是,有什么方法可以确保这确实符合所描述的场景(请求因用户操作而中止)?我想避免掩盖其他可能更危险的错误。

【问题讨论】:

  • 如果通过 Ajax 导航到不同的屏幕,您可以使用 ajax 启动/完成事件来控制正在进行的 Ajax 请求。
  • 除了“用户导航到另一个页面”之外,您能否提及其他示例用户如何通过您的网页中断请求?

标签: javascript ajax


【解决方案1】:

对于导航到另一个页面的用户,您可以使用onbeforeunload 事件。

例如:

window.onbeforeunload = function() {
    // Check ajax request state and do something accordingly...
}

【讨论】:

  • 嗯,它不仅是导航离开页面,还包括任何导致中止 Ajax 请求的用户操作。
  • 我认为如果单击指向同一页面的链接,onbeforeunload 不会触发,但我发现我错了。
  • @zaf,就像按下“Esc”按钮 :)
【解决方案2】:

您可以在用户触发 ajax 请求时设置一个变量(布尔值)。将其设置回回调函数中。如果用户离开页面,你可以检查这个变量。

【讨论】:

  • 你的意思是我应该在每个页面的每个链接或按钮上添加一个回调函数?
  • 回调应该由请求执行。
猜你喜欢
  • 1970-01-01
  • 2013-10-18
  • 2013-07-07
  • 2012-06-02
  • 2021-10-24
  • 2015-08-08
  • 2011-02-27
  • 1970-01-01
  • 2013-04-03
相关资源
最近更新 更多