2011-08-23 34 views
1

通常,我有一种情况,即页面上的操作导致发出ajax请求。当这些操作中的几个堆积起来时,每个ajax请求都会进入并执行其操作(可能会更新项目列表)。这看起来很可怕。我试图想办法有一个请求只更新项目列表,如果没有请求相同类型的东西当前“待定”。想法?仅显示最近请求的ajax结果

+0

到目前为止你有什么代码? – PeeHaa

回答

1

您的选择:

  1. 保持请求列表,并检查是否元素在列表中。如果它在列表中,则意味着请求正在发生。如果不是,您可以开始一个请求并将其添加到列表中。 Example on jsFiddle

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

+0

有趣的中止方法,就是用这个;谢谢。 – kr1zmo

0

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

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

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