我必须循环发出一系列 Ajax 请求。其中大约有100个。每个请求都会返回一个 JSONP 变量。我从 JSON 中提取数据并将值附加到 div 中。问题是我希望 div 按函数调用的顺序附加数据。即依次。现在,每次刷新页面时,我都会根据请求完成的顺序得到不同的顺序。这是我的代码。
$.each(elem, function (index, item) {
$.ajax({
type: 'post' ,
url: moviesSearchUrl + '&q=' + encodeURI(item) + '&page_limit=1',
dataType: "jsonp",
async: false,
success: searchCallback
});
function searchCallback(data) {
var movies = data.movies;
var markup = index + ': '+ movies[0].title + '<img class=" bord" src="' + movies[0].posters.thumbnail + '" /><br/>';
$("div.content").append(markup);
}
});
});
当我在 div 内显示索引的值时,每次我都会收到随机订单。有时是 2 4 3 1 7,有时是 1 5 2 7 4。我什至尝试 async: false 。那没有帮助。我在某处读到 JSONP 无法使用 async: false 完成。请帮帮我。
最佳答案
不要使用 for 循环。使用递归函数:
var i = 1;
function loadNext(){
if (i < 5){
$.ajax({
type: "GET",
url: "results/result_html.php?usn="+i+"&resultType="+resultType,
dataType:"JSON",
success:function(result){
finalResult+=result;
result=result+htmlMessage;
$("#info").hide();
$("#result").html(result);
$("#usn").attr("placeholder", "Class USN");
loadNext();
}
});
i++;
}
}
关于jquery - 如何让循环中的多个ajax请求按顺序返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10098890/