我迷路了。我如何将循环变量传递给AJAX .done()调用?
for (var i in obj) {
$.ajax(/script/).done(function(data){ console.log(data); });
}
显然,如果我要做console.log(i+' '+data)
,将在每次迭代时返回对象obj
中的最后一个键。文档告诉我。
答案 0 :(得分:13)
您可以使用闭包(通过自执行函数)为每次循环调用捕获i
的值,如下所示:
for (var i in obj) {
(function(index) {
// you can use the variable "index" here instead of i
$.ajax(/script/).done(function(data){ console.log(data); });
})(i);
}
答案 1 :(得分:13)
您可以在发送到$ .ajax()的对象中创建一个自定义字段,它将是"中的一个字段"当承诺回调时。
例如:
$.ajax(
{ url: "https://localhost/whatever.php",
method: "POST",
data: JSON.stringify( object ),
custom: i // creating a custom field named "custom"
} ).done( function(data, textStatus, jqXHR) { var index = this.custom; } );