Javascript ajax请求中的延迟处理
这是我必须解决的情况Javascript ajax请求中的延迟处理,javascript,jquery,ajax,Javascript,Jquery,Ajax,这是我必须解决的情况 页面中有两个视图 最初加载第一个视图 仅当用户单击第二个视图时,才会加载第二个视图的数据 问题: 用户单击第二个视图 ajax请求需要时间来响应 因此,用户返回到第一个视图 现在调用ajax请求的回调 用户当前处于第一个视图中,但内容属于第二个视图 我如何处理这种情况 有没有解决此类问题的通用方法,或者应该根据具体情况进行解决。因此,如果您理解正确,您有一个流程,您希望在两个视图中都看到该流程 你可以打个电话启动这个过程。通过文件系统/会话/数据库将somewehere设置
有没有解决此类问题的通用方法,或者应该根据具体情况进行解决。因此,如果您理解正确,您有一个流程,您希望在两个视图中都看到该流程 你可以打个电话启动这个过程。通过文件系统/会话/数据库将somewehere设置为当前状态(如果发生致命错误,您希望确保没有读访问锁定,并且具有时间戳以确保删除死数据) 您的状态可以是整数:
- 1:进程已启动
- 2:第一种方法处理
- 3:第三种处理方法
- 4:完成
输出文件/记录/会话
在你每5000毫秒询问的2个视图中,服务器:你有什么东西给我吗?如果是,您将显示它
jQuery ajax方法返回XMLHttpRequest对象,因此您可以只使用
.abort()
假设,这是对第二视图的ajax调用:
view2_ajax = $.ajax({
url: 'your_view2_url'
});
view2_ajax.done(function(result){
// do something for success
});
view2_ajax.fail(function(result){
// do something for fail
});
因此,当用户单击第一个视图时,只需调用view2\u ajax.abort()
,该ajax调用将被取消
有关更多信息,请访问(jQuery API文档)。您可以使用一个隐藏gif图像来显示ajax内容正在加载。使用加载指示器?如果用户仍然继续并单击怎么办?那么这不是一个问题吗?@GauthamRenganathan在加载gif图像时,您可以通过在任何地方禁用点击屏幕来阻止用户在gif图像显示时进行第一次查看。如果您使用fancybox显示加载的gif,则可以通过将fancybox的modal属性设置为true作为modal:true来实现。@TusharDave:是否有任何问题另一种处理方法。因为我不想妨碍用户体验。现在用户已经切换了他的视图,我可以默默地忽略请求的回调吗?