仅显示最近请求的ajax结果

时间:2011-08-23 23:29:37

标签: javascript jquery ajax

我常常遇到页面上的操作导致ajax请求的情况。当其中几个操作堆叠起来时,每个ajax请求依次进入并执行其操作(可能更新项目列表)。这看起来很糟糕。我试图想办法让一个请求只更新项目列表,如果没有相同类型的东西的请求当前“待定”。想法?

3 个答案:

答案 0 :(得分:1)

您的选择:

  1. 保留请求列表并检查该元素是否在列表中。如果它在列表中,则表示请求正在发生。如果不是,您可以启动请求并将其添加到列表中。 Example on jsFiddle

  2. 在发出新请求之前,中止现有请求。这将导致最后一个请求被丢弃而其他请求将被丢弃,与解决方案1相反。Example on jsFiddle

答案 1 :(得分:0)

保留请求列表。提交请求时,请将其添加到列表中。在加载和错误函数上,将其从列表中删除。

因此,当您处理加载时,如果堆栈上没有请求,那么它将处理,否则它将返回null。

答案 2 :(得分:0)

var doing_ajax = false;
$("#action").click(function(){
    if (!doing_ajax){
       doing_ajax = true;
       do_ajax();
    }

});

function do_ajax(){
  $("#content").load('something.php', function(){
      doing_ajax = false;
  });
}