我在这样的循环中发送多个Ajax请求
for(var i = 0;i < lines.length;i++){
$.ajax({
type: "POST",
url: "info.php",
data: {somedata:lines[i]},
success :function(data){}
})
}
并使用
$(document).ready(function(){
$(document).ajaxStart(function(){
$("#wait").css("display","block");
});
$(document).ajaxComplete(function(){
$("#wait").css("display","none");
});
});
显示Ajaxloader。但问题是,只要第一个请求通过,加载器就不会出现在下一个请求中,我在这里遗漏了什么吗?
答案 0 :(得分:1)
您可以添加counter
变量,这样加载动画将显示,直到最后一个ajax请求结束,例如:
var counter = 0;
$(document).ajaxStart(function(){
counter++;
if(counter)
$("#wait").css("display","block");
});
$(document).ajaxComplete(function(){
counter--;
if(!counter)
$("#wait").css("display","none");
});
答案 1 :(得分:0)
根据文档
描述:注册第一个Ajax请求开始时要调用的处理程序。这是一个Ajax事件。
所以它只被调用第一个请求和
我的代码中的(文档)$ .ajaxComplete
部分等待第一个请求完成,我应该使用
(文档)$ .ajaxStop
代替。糟糕的w3schools.com ajaxloader教程!