问题描述:
在一个循环中每次循环都要发送一个ajax请求,在每次ajax请求成功后调用的回调函数中要用到当前循环是第几次,那么若ajax还是异步请求方式的话,会出现问题.
如下面这个例子:
for(var i = 0;i<2;i++){
var piid1 = ct[i].piid;
var json="{piid:'"+piid1+"'}";
$.ajax({
url:"com.pvpb.visual.schedule.scheduleManager.queryRatioByPiid.biz.ext",
type : 'POST',
data : json,
cache : false,
contentType : 'text/json',
success: function(text){
alert(i);
}
});
}
想要每次循环的时候发送ajax请求,并且ajax请求成功后打印出当前是第几次循环,那么结果会出现每次在网页上弹出的提示框都是1;
这是因为ajax是异步请求造成的,当第一个ajax发送请求的时候,循环同时也开始了下一次,在第一个ajax请求成功后这个时候i已经是1了,所以取不到之前的0,
解决方案:
将ajax请求方式转化为同步请求方式
即:将ajax方法加一个参数:async 并将他的值设置为:false;这样ajax请求就是同步请求了,若值为true时是异步请求.