如何在一个循环执行ajax方法里面嵌套的ajax方法

functiona(){$.ajax({success:function(data){for(循环data){$.ajax({success:function(){}})... function a(){
$.ajax({
success:function(data){
for(循环data){
$.ajax({
success:function(){

}
});
}
},
});
}
大体是这样的,第一个ajax请求一次获取了一个数组,循环这个数组,执行第二个ajax,第二个ajax post请求的值是第一个ajax获取的数组循环得来的。我这样写,发现第二个ajax只执行了一次,不是for循环一次就执行一次的。不懂是啥问题?
展开
 我来答
百度网友9d54b16e5
2013-03-27 · TA获得超过691个赞
知道小有建树答主
回答量:404
采纳率:0%
帮助的人:245万
展开全部
这种问题 可以这样做,
将 ajax 请求封装 成一个函数。
将循环中的参数 传入函数 执行,
这样可以 避免 每次执行的ajax 可能都是循环的最后一次
每次循环的时候 由于是异步处理,(同步请求不会有这样的问题)
当ajax 准备执行的时候 ,去读取循环中的参数,
而这个时候 循环的值已经不最开始的那个了 ,
,我们将这个值保存在参数中, 而这样,
ajax 去请求的时候 读取的是参数值, 而不是循环的值

function a(){
$.ajax({
success:function(data){
for(循环data){
//这样可以避免 循环执行完了 ajax 还没执行的问题
fn_ajax(data[i])
}
},
});
function fn_ajax(data){
$.ajax({
success:function(){
}
});

}
}
lifei6671
推荐于2017-05-21 · TA获得超过9228个赞
知道大有可为答主
回答量:3899
采纳率:25%
帮助的人:2764万
展开全部
for循环执行很快,而ajax执行很慢,这个时候会出现很多问题.

所以,不要用for循环去执行ajax.

而ajax有自己的安全机制, 你在一个回调函数中再次提起n次的ajax,会有很多不可预料的问题.

建议还是分开,或是自己写方法实现!
更多追问追答
追问
第二次执行的ajax必须要用到循环里面的参数,这分开了怎么整?function a()是在页面加载完就执行的函数
追答
如果你请求的url是一个固定值,就没必要循环请求,一次性请求到这个URL上,由后台负责逻辑运算是很简单的事情.

返回一个json数据,再由前台去负责数据分配也比较容易维护!
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友530466a
2015-04-18
知道答主
回答量:9
采纳率:0%
帮助的人:4.3万
展开全部
用js的闭包处理这个问题很合适。闭包的用法搜索一下就明白。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
黄雁翀
2013-09-02
知道答主
回答量:3
采纳率:0%
帮助的人:2.8万
展开全部
我刚也遇到这个问题,我试过了一些办法,最后我是用递归解决了问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zooocloud
2012-10-09 · TA获得超过167个赞
知道小有建树答主
回答量:254
采纳率:0%
帮助的人:226万
展开全部
多调试啊,你怎么知道没有执行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式