for循环ajax带来的问题。这里使用的是jquery封装的ajax。ajax设置了同步,当快速执行ajax会出问题

页面上面for(vari=0;i<9;i++){$.ajax({type:"post",dataType:"xml",async:false,url:"xxxxx",su... 页面上面for(var i =0;i<9;i++){
$.ajax({
type:"post",
dataType:"xml",
async:false,
url:"xxxxx",
success:function(data){
.....
},
error:function(data){
.....
}
}).
这段时间一直被一个问题纠结着。本来是想for循环里面执行一次ajax然后ajax请求一下后台,后台给了返回信息,然后再执行下一次ajax请求,但是for循环执行前面几次还正常。但是当执行到后面比如说执行到第5次的时候,ajax不会跳转到那个url去,而是直接就返回error:funtion(){}了。不知道这是为什么?求解?
我在思考,是不是ajax调用得太快了。当调用成功一次之后,他的状态还没有从200变回来,就开始执行下一次的ajax了。这样他本身就当成是完成了调用了,但是调用的结果却没有,所以就执行了error:function了?
展开
 我来答
pzl7758
2011-12-15 · TA获得超过603个赞
知道小有建树答主
回答量:962
采纳率:100%
帮助的人:631万
展开全部
首先你的这个实现逻辑就有问题,怎么可能会想到用for 去做n次ajax提交呢,你得知道你现在上面写的这种ajax提交方式为异步方式,何为异步,就是当ajax请求发出后当前逻辑就认为你的这次请求完成了,当前逻辑会继续往下执行而不会去管你的这个ajax请求是否执行完并成功返回的,如你for了10次,那么for只会管执行10个ajax提交,因为ajax是异步方式,所以你在for里面无法控制你的这10次ajax是否都正常的执行并返回的,这10次ajax提交的返回是无序的。所以一般都不会用这样的逻辑来处理问题,如果实在非得要用这种逻辑,那么得将ajax请求方式改成同步方式,即将async:false 改成 async:true,这样就可能如你的预期,一个ajax执行完正常返回后才行下一个ajax,

==================================================================
哦,那是我记错咯,如果你实在要用这种实现逻辑的话,我倒建议你不要这么写,类似下面这种写法应该好处理些的:
for (var i=0; i<9; i++)
{
var post_data = new Array('rand':new Date().getMilliseconds())
var post_retn = eval('('+ $.ajax({type:'post', data:post_data, url:'xxxxx&rand=' + new Date().getMilliseconds(), async:false}).responseText +')');
alert(post_retn);
}
lifei6671
2011-12-15 · TA获得超过9228个赞
知道大有可为答主
回答量:3899
采纳率:25%
帮助的人:2771万
展开全部
for循环执行速度太快了,ajax的请求和返回数据以及处理需要时间的。
建议换成定时执行,定义一个全局变量,然后每执行一次,变量就加1,直到9为止,然后清除定时器。
追问
恩 我也感觉是for循环执行得太快了。现在的问题是这个定时器怎么来制定,我怎么知道后台什么时候能够给我返回。还有就是我刚才测试了下,error:function里面返回的status是200,但是url指向的后台代码根本就没有执行。奇怪了
追答
你是依次执行吗?
可以设定为每秒执行一次,判断上一次是否执行成功,如果执行成功的话就进行下一次执行,否则的话就不执行。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhukaiheihei
2011-12-15 · TA获得超过607个赞
知道小有建树答主
回答量:3497
采纳率:0%
帮助的人:1132万
展开全部
error函数可以打印出错误原因、代码之类的信息吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-12-15
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式