将变量传递给 $.ajax().done()
Posted
技术标签:
【中文标题】将变量传递给 $.ajax().done()【英文标题】:Passing variables to $.ajax().done() 【发布时间】:2012-04-21 00:00:25 【问题描述】:我迷路了。如何将循环变量传递给 AJAX .done() 调用?
for (var i in obj)
$.ajax(/script/).done(function(data) console.log(data); );
显然,如果我要执行 console.log(i+' '+data)
i 将在每次迭代时返回对象 obj
中的最后一个键。文档让我失望。
【问题讨论】:
我想我可以使用success
,但据我所知,现在已弃用。
【参考方案1】:
您可以在发送到 $.ajax() 的对象中创建一个自定义字段,当进行 promise 回调时,它将是 this
中的一个字段。
例如:
$.ajax(
url: "@987654321@",
method: "POST",
data: JSON.stringify( object ),
custom: i // creating a custom field named "custom"
).done( function(data, textStatus, jqXHR) var index = this.custom; );
【讨论】:
5年过去了,我早就忘记了是什么引发了这个问题。 ;) 我需要知道如何为最近的项目执行此操作。因此,当我弄清楚时,我也尝试将信息传递给其他说他们想要它的人...... 从 jquery ajax 异步执行的角度来看,这更好,它清楚地在回调及时执行时提供了预期的项目/对象引用。【参考方案2】:您可以使用闭包(通过自执行函数)为每次循环调用捕获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);
【讨论】:
闭包是我一直很难完全理解的一个概念。谢谢@jfriend00,我试试看! 是的,这行得通。我什至可以做obj[index]
。再次感谢!以上是关于将变量传递给 $.ajax().done()的主要内容,如果未能解决你的问题,请参考以下文章
通过 ajax 将 Javascript 变量传递给 PHP
Laravel 使用 AJAX 将 Javascript 变量传递给 PHP 并检索那些