jquery问题,$.ajax在for循环里,如何控制完成success函数后再执行下一条循环?
for(vari=0;i<jsonArr.length;i++){varj=i+1;changeHtml("status-show","已获得图书列表....共计"+js...
for(var i = 0; i < jsonArr.length; i++){
var j=i+1;
changeHtml("status-show","已获得图书列表....共计"+jsonArr.length+"本图书,正在检查....("+j+"/"+jsonArr.length+")《"+jsonArr[i]['bookName']+"》");
$.ajax({
url: "ajax/checkSingleImage.php?",
data: {imgUrl:jsonArr[i]['bookCover']},
async:false, //设置为同步
success: function(msg){
var sondiv=document.createElement("div");
sondiv.id = "sondiv"+i;
sondiv.style.color = "ccc";
if(msg != "HTTP/1.1 200 OK"){
errCount++;
sondiv.style.color = "red";
}
sondiv.innerHTML = "《"+jsonArr[i]['bookName']+"》:<a target='_black' style='color:"+sondiv.style.color+";' href='"+jsonArr[i]['bookCover']+"'>点击查看图片";
div.insertBefore(sondiv,lastdiv);
document.getElementById(sondiv.id).innerHTML=sondiv.innerHTML+" "+msg;
lastdiv =sondiv;
alert(lastdiv.id);
}
});
}
如果把alert去掉,页面会完全静止,直到所有请求完成后,一起显示出来 展开
var j=i+1;
changeHtml("status-show","已获得图书列表....共计"+jsonArr.length+"本图书,正在检查....("+j+"/"+jsonArr.length+")《"+jsonArr[i]['bookName']+"》");
$.ajax({
url: "ajax/checkSingleImage.php?",
data: {imgUrl:jsonArr[i]['bookCover']},
async:false, //设置为同步
success: function(msg){
var sondiv=document.createElement("div");
sondiv.id = "sondiv"+i;
sondiv.style.color = "ccc";
if(msg != "HTTP/1.1 200 OK"){
errCount++;
sondiv.style.color = "red";
}
sondiv.innerHTML = "《"+jsonArr[i]['bookName']+"》:<a target='_black' style='color:"+sondiv.style.color+";' href='"+jsonArr[i]['bookCover']+"'>点击查看图片";
div.insertBefore(sondiv,lastdiv);
document.getElementById(sondiv.id).innerHTML=sondiv.innerHTML+" "+msg;
lastdiv =sondiv;
alert(lastdiv.id);
}
});
}
如果把alert去掉,页面会完全静止,直到所有请求完成后,一起显示出来 展开
2个回答
展开全部
其实目前就是按照次序执行完一次成功之后,再执行下一次。
问题在于你使用了同步模式,会卡住所有的界面操作。
建议使用异步模式,并提供出错处理函数,以进行异常处理。
同时界面使用进度条阻止用户有其它操作。
问题在于你使用了同步模式,会卡住所有的界面操作。
建议使用异步模式,并提供出错处理函数,以进行异常处理。
同时界面使用进度条阻止用户有其它操作。
追问
async:true, 以后,会导致得不到服务端响应就向下执行了呀
追答
那样的话就不要使用循环了,相当于全变成回调方式, 提交一个请示,界面显示进度条,等待服务器回应,成功收到回应之后,再提交下一个请求,更新进度条,等待。。。。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询