只显示最近请求的ajax结果

Only show ajax results from the most recent request

本文关键字:ajax 结果 请求 显示 最近      更新时间:2023-09-26

我经常遇到这样的情况:页面上的一个操作会引起ajax请求。当这些操作叠加在一起时,每个ajax请求依次进入并执行其操作(可能更新项列表)。这看起来很可怕。我正试图想出一种方法,让一个请求只更新项目列表,如果没有请求相同类型的事情目前"待定"。想法吗?

您的选择:

  1. 保存一个请求列表,并检查该元素是否在列表中。如果它在列表中,则意味着请求正在发生。如果不是,您可以启动请求并将其添加到列表中。关于jsFiddle的例子

  2. 在发出新请求之前,终止现有请求。这将导致最后一个请求离开,而其他请求将被丢弃,与解决方案1相反。关于jsFiddle的例子

保留一个请求列表。提交请求时,将其添加到列表中。在load和error函数中,将其从列表中删除。

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

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;
  });
}