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去掉,页面会完全静止,直到所有请求完成后,一起显示出来
展开
 我来答
百度网友5e99258cf
2014-08-04 · TA获得超过1687个赞
知道大有可为答主
回答量:1299
采纳率:71%
帮助的人:661万
展开全部
你可以把ajax写成一个函数~然后返回成功后就调用一次这个函数~(就是自己调用自己),这样就可以读出一个显示一个了~
joychen_
推荐于2017-09-24 · TA获得超过1747个赞
知道大有可为答主
回答量:1617
采纳率:100%
帮助的人:1776万
展开全部
其实目前就是按照次序执行完一次成功之后,再执行下一次。
问题在于你使用了同步模式,会卡住所有的界面操作。
建议使用异步模式,并提供出错处理函数,以进行异常处理。
同时界面使用进度条阻止用户有其它操作。
追问
async:true, 以后,会导致得不到服务端响应就向下执行了呀
追答
那样的话就不要使用循环了,相当于全变成回调方式, 提交一个请示,界面显示进度条,等待服务器回应,成功收到回应之后,再提交下一个请求,更新进度条,等待。。。。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式