将变量传递给$ .ajax()。done()
我迷路了。 我如何将循环变量传递给AJAX .done()调用?
for (var i in obj) { $.ajax(/script/).done(function(data){ console.log(data); }); }
显然,如果我要做console.log(i+' '+data)
我会在每次迭代时返回对象obj
中的最后一个键。 文档让我失望。
您可以使用闭包(通过自执行函数)为每次循环调用捕获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); }
您可以在发送到$ .ajax()的对象中创建自定义字段,并且在进行promise回调时它将是“this”中的字段。
例如:
$.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; } );