5

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

问题:

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

这是正常行为吗?关于如何修复/重组它的任何建议?

4

1 回答 1

0

我相信 .ajaxStop() 只有在 beforeSend 回调返回 false 时才会取消 ajax 请求。在这种情况下,呼叫尚未启动,服务器尚未收到请求。一旦请求被发送到服务器,页面将不再控制请求,直到它返回。.ajaxStop() 请求在离开页面时触发,因为最后一次 ajax 调用(如果有的话)成功完成并因此终止执行。

如果通过在 beforeSend 回调函数中返回 false 来取消最后一个未完成的 Ajax 请求,也会触发 ajaxStop 事件。

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

希望这可以帮助。

于 2012-10-03T18:39:23.250 回答