jquery - 当用户点击刷新时处理ajax错误

标签 jquery ajax error-handling

如果这是我应该能够查找的内容,我深表歉意。我想要的所有术语都重载了..

这是我的问题:当我打开一个页面时,它会触发一系列的 ajax 调用。如果我然后按 Shift+Refresh,所有这些 ajax 调用都将被视为错误,并在整个页面本身重新加载之前显示错误消息对话框。

所以错误是由客户端触发的 - 我是否可以找出是否是这种情况,以便我可以忽略它?例如在 xmlhttprequest 中,或在 ajax 函数中(我正在使用 jquery 顺便说一句)

最佳答案

有几种建议的方法来检测此问题:

  • 一些人建议使用 beforeunload处理程序设置一个 bool 标志,以便错误处理程序可以知道页面正在卸载(请参阅下面的相关/重复帖子列表)。这很棒,除了mobile Safari on iOS doesn't support the beforeunload event .

  • Sachindra suggested这种方法不是立即触发错误函数,而是在 setTimeout(..., 1000) 中延迟了一秒钟。 。这样,当错误处理程序被调用时,页面很可能实际上已经消失了。就是“好机会”。我敢打赌,如果我有一个巨大的页面,例如许多<input> s,卸载可能需要超过 1 秒的时间,然后错误处理程序可能无论如何都会触发。

因此,我建议组合 reliably detecting beforeunload support如果 beforeunload不支持(咳嗽 iPad/iPhone 咳嗽)恢复到 Sachindra 的延迟技巧。

通过beforeunload查看完整的解决方案检测和所有这一切jsfiddle .

看起来情况是a little better for jQuery 2.x than for 1.x ,但 2.x 似乎也有点不稳定,所以我仍然认为这个建议是谨慎的。

P.S: 还有一些建议涉及测试 XHR 中的某些字段。/jqXHR目的。 ( Herehere )。我还没有遇到过可以在长时间运行的 AJAX 调用期间区分用户导航和重新启动 Web 服务器的组合,因此我没有发现这种方法对我有用。

这实际上也是对这些相关/重复的 Stack Overflow 问题的答案:

以及 Stack Overflow 之外的这些帖子:

关于jquery - 当用户点击刷新时处理ajax错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/699941/

相关文章:

jquery - 使此布局高度增长的最佳方法是什么

javascript - 为什么期望 Flash 可用/启用是可以接受的,但 JavaScript 不是?

php - AJAX PHP 回调函数中的参数

macos - 错误 : dlopen() Library not loaded Reason: image not found

javascript - 单击元素时获取索引,然后传递该索引以触发另一个事件

javascript - 如何每次调整大小以获得相同的像素值,例如("10px")与 jquery-ui?

jquery - 使用动态内容保持页脚向下

php - 每 x 秒自动刷新一个 Html 表

sql - Postgresql-Insert值出现非空冲突

java - 在 FreeMarker 中发出错误信号