ajax - 取消 AJAX 请求会减慢后续导航速度

标签 ajax jquery

在我的应用程序中,当用户请求报告时,会对执行大量数字运算和 mySQL 请求的文件进行 jquery AJAX(使用 .load() )调用。加载一般需要 5-6 秒,使用 .ajaxStart().ajaxStop() 在加载过程中显示加载 gif。

问题:

如果用户单击“生成报告”按钮,然后改变主意并尝试导航到另一个页面,应用程序将挂起,并且在 5-6 秒内不会导航到新页面。我可以从加载 gif 的删除中看出,在尝试导航到新页面时 .ajaxStop() 会立即触发,但看起来 ajax 请求在浏览器加载下一页之前就已完成。

这是正常行为吗?关于如何修复/重组这个问题有什么建议吗?

最佳答案

我相信 .ajaxStop() 仅当 beforeSend 回调返回 false 时才会取消 ajax 请求。此时,调用尚未发起,服务器未收到请求。一旦请求被发送到服务器,页面就不再控制该请求,直到它返回。离开页面时会触发 .ajaxStop() 请求,因为最后一次 ajax 调用(如果成功完成)会终止执行。

The ajaxStop event is also triggered if the last outstanding Ajax request is cancelled by returning false within the beforeSend callback function.

以上摘录自 jquery api 网站 .ajaxStop()命令。看起来,一旦发出调用并发送请求,即使用户正在导航到不同的页面,您的服务器也会完成调用。如果调用量很大,可能会导致您遇到延迟。

希望这有帮助。

关于ajax - 取消 AJAX 请求会减慢后续导航速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12373278/

相关文章:

javascript - 无法使用ajax将项目附加到数组

javascript - 如何防止无限滚动在选项卡未处于事件状态时加载页面?

javascript - 如何将 qtip 添加到 kendo 网格以获取省略的单词?

Javascript split 不是一个函数

javascript - Ajax 路径适用于一个数组,但不适用于另一个数组

javascript - AJAX请求只在一个复选框上执行,需要它在任何一个复选框上执行

Javascript 从类中获取值(value)

javascript - 设置 css 属性的最快方法?

javascript - 单击列表元素符号时禁用列表突出显示

javascript - jQuery filter() 和 find() 在 AJAX 响应上返回错误