在我的应用程序中,当用户请求报告时,会对一个文件进行jquery (使用.load()
)调用,该文件执行大量的数字处理和mySQL请求。加载通常需要5-6秒,加载期间使用.ajaxStart()
和.ajaxStop()
来显示加载gif。
这一问题:
如果用户单击“generate”按钮,然后改变主意,尝试导航到另一个页面,应用程序将挂起,并在5-6秒内不导航到新页面。从加载gif的删除中可以看出,.ajaxStop()
在尝试导航到新页面时立即触发,但在浏览器加载下一页之前,似乎已经完成了ajax请求。
这是正常行为吗?对于如何解决/重组这一问题,有什么建议吗?
发布于 2012-10-03 18:39:23
我认为,只有当.ajaxStop回调返回false时,beforeSend ()才会取消beforeSend请求。在这种情况下,调用没有启动,服务器也没有收到请求。一旦请求被发送到服务器,页面将不再控制请求,直到它返回。当从页面导航时,.ajaxStop()请求会触发,因为最后一次ajax调用已经成功完成,因此会终止执行。
如果上次未完成的Ajax请求通过在ajaxStop回调函数中返回false来取消,则还会触发beforeSend事件。
以上摘录自jquery网站上的.ajaxStop()命令。看来,一旦发出了调用并发送了请求,即使用户导航到另一个页面,您的服务器仍在完成调用。如果是这么大的一个电话,可能会导致你所经历的延迟。
希望这能有所帮助。
https://stackoverflow.com/questions/12373278
复制相似问题