在for循环中进行ajax调用。 for循环不等待ajxa调用得到响应,它将值递增到加1,因此响应不会更新到它的相应div。
示例:我有'N'
个没有div,其中id为divid0,divid1,divid2,divid3,divid4 ........ dividn。
在循环中(对于(var i = 0; i< n; i ++)),首先'i'值为零,我需要更新我对id为"divid0"
的div的第一个ajax响应,但直到我得到循环'i'
中的ajax响应递增为1,因此我的第一个ajax响应正在更新为div,其id为"divid1"
而不是"divid0"
。
我使用ajax同步调用克服了这个问题,但问题是我无法将页面拖到底部,直到完全加载页面。我的网页包含大约10个滑块,因此完全加载需要超过一分钟,然后只有用户才能查看该页面。所以我希望用户即使在页面加载时也会拖到页面底部(加载最少一个滑块后)。
提前致谢,这是我的代码
for(var sliderId=0; sliderId < 6; sliderId++){
$.get('api url', {}, function(response){
if(!response){
$("#slider"+sliderId).html('Currently there is no items in this category');
} else{
if((response.results) && (response.results.length > 0)){
getInfo(response, sliderId);
}
}
});
}
答案 0 :(得分:0)
你也可以使用这种递归方法获得结果
var sliderId = 0;
function recursive1(sliderId)
{
$.get('api url', {}, function(response){
if(!response){
$("#slider"+sliderId).html('Currently there is no items in this category');
} else{
if((response.results) && (response.results.length > 0)){
getInfo(response, sliderId);
}
}
if(sliderId < 6)
recursive(sliderId++)
});
}
recursive1(0)
答案 1 :(得分:0)
问题是,&#39; sliderId&#39;在所有响应中指的是相同的变量。因为在for循环完成之前没有调用回调,所以&#39; sliderId&#39;将有价值&#39; 6&#39;对于所有响应呼叫。 你可以通过为每个ajax调用引入一个新的范围来解决这个问题(比如MMK sggested)。
E.g。由:
for(var sliderId=0; sliderId < 6; sliderId++) {
updateDiv(sliderId);
}
function updateDiv(sid) {
$.get('api url', {}, function(response){
if(!response){
$("#slider"+sid).html('Currently there is no items in this category');
} else{
if((response.results) && (response.results.length > 0)){
getInfo(response, sid);
}
}
});
}