在我的应用程序上,当用户请求报告时.load(),对一个执行大量数字运算和mySQL请求的文件进行jquery AJAX(使用)调用.它通常需要5-6秒来加载,.ajaxStart()并.ajaxStop()用于在加载期间显示加载gif.
问题:
如果用户单击"生成报告"按钮,然后改变主意并尝试导航到应用程序挂起的另一个页面,并且不会导航到新页面5-6秒.我可以通过删除.ajaxStop()在尝试导航到新页面时立即触发的加载gif 来判断,但看起来ajax请求在浏览器加载下一页之前完成.
这是正常的行为吗?关于如何修复/重组这个的任何建议?
我相信 .ajaxStop() 仅当 beforeSend 回调返回 false 时才会取消 ajax 请求。此时,呼叫尚未发起,服务器未收到请求。一旦请求被发送到服务器,页面就不再控制该请求,直到它返回。离开页面时会触发 .ajaxStop() 请求,因为最后一次 ajax 调用(如果有成功完成)会终止执行。
如果通过在 beforeSend 回调函数中返回 false 来取消最后一个未完成的 Ajax 请求,也会触发 ajaxStop 事件。
上面是.ajaxStop()命令的 jquery api 网站的摘录。看起来,一旦发出呼叫并发送请求,即使用户正在导航到不同的页面,您的服务器也会完成呼叫。如果通话量很大,可能会导致您遇到延迟。
希望这可以帮助。