处理ajax请求的延迟

时间:2014-05-30 11:55:30

标签: javascript jquery ajax

以下是我必须解决的方案,

  1. 页面中有两个视图。
  2. 最初加载第一个视图。
  3. 仅当用户点击第二个视图时才会加载第二个视图的数据。
  4. 问题:

    1. 用户点击第二个视图。
    2. ajax请求需要时间来回复。
    3. 用户返回第一个视图。
    4. 现在调用ajax请求的回调。
    5. 用户当前处于第一个视图中,但内容属于第二个视图。
    6. 我该如何处理这种情况?

      是否存在修复此类问题的通用方法,或者是否应根据具体情况进行修复。

3 个答案:

答案 0 :(得分:0)

因此,如果您理解正确,那么您有一个流程,您希望在两个视图中看到它?

您可以拨打电话以启动该过程。通过文件系统/会话/数据库设置一些当前状态(您要确保,您没有锁定读取访问权限并且有时间戳以确保删除死数据,如果发生致命错误)

你的国家可能是整数:

  • 1:流程已开始
  • 2:第一种方法处理
  • 3:第三方法处理
  • 4:完成

您还可以为每个步骤Output File/Record/Session

撰写

在2个视图中,你问每5000个MS服务器:你有什么东西给我吗?如果是,您将显示它。

答案 1 :(得分:0)

  1. 在第二个视图中添加一个加载指示器,以便用户知道正在发生的事情并且他/她应该等待。

  2. 从第二个视图返回第一个视图时,您始终可以中止AJAX请求。更多信息:

  3. Abort Ajax requests using jQuery

答案 2 :(得分:0)

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_ajax.abort()即可取消ajax通话。

访问 jqXHR 以获取更多信息(jQuery API文档)。