我常常遇到页面上的操作导致ajax请求的情况。当其中几个操作堆叠起来时,每个ajax请求依次进入并执行其操作(可能更新项目列表)。这看起来很糟糕。我试图想办法让一个请求只更新项目列表,如果没有相同类型的东西的请求当前“待定”。想法?
答案 0 :(得分:1)
您的选择:
保留请求列表并检查该元素是否在列表中。如果它在列表中,则表示请求正在发生。如果不是,您可以启动请求并将其添加到列表中。 Example on jsFiddle
在发出新请求之前,中止现有请求。这将导致最后一个请求被丢弃而其他请求将被丢弃,与解决方案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;
});
}