for (var i = 0; i < 3; i++){
$.ajax({
url: "ajax.php",
success: function(data){
alert(i);
}
});
}
我需要一个解决方案来获取“0”,“1”和“2”的警报。 Аt这个时候我当然看到3个警告“3”。
答案 0 :(得分:4)
您需要在$.ajax()
来电时设置一个闭包。
for (var i = 0; i < 3; i++){
(function (loop_var) {
$.ajax({
url: "ajax.php",
success: function(data){
alert(loop_var);
}
});
})(i);
}
目前正在输出3
,因为我在Ajax返回时i
的值确实为3
。
答案 1 :(得分:2)
在代码周围使用匿名函数包装器来创建一个闭包,它将保持值,直到异步响应到达:
for (var i = 0; i < 3; i++){
(function(i){
$.ajax({
url: "ajax.php",
success: function(data){
alert(i);
}
});
})(i);
}
答案 2 :(得分:0)
将i值作为参数传递给ajax.php页面。 ajax.php页面必须将i返回到调用页面。所以让ajax.php页面返回i。 您可以使用json对象或一个简单的管道分隔字符串来存储来自ajax.php的返回值。
for (var i = 0; i < 3; i++){
$.ajax({
data: {par: i},
url: "ajax.php",
success: function(data){
//data is a pipe-separated string
var cnt = data.split("|")[0];
alert(cnt);
}
});
}