微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

取消的AJAX请求会降低后续导航速度

在我的应用程序用户请求报告时,jquery AJAX(使用.load())调用一个执行大量数字运算和MysqL请求的文件.加载通常需要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()命令的摘录.看来,一旦完成呼叫并且已发送请求,即使用户正在导航到其他页面,您的服务器也正在完成呼叫.如果这是一个很大的通话,它可能会导致你遇到的延迟.

希望这可以帮助.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐