假设我有一个循环,我希望在ajax调用中使用循环的值,因为ajax调用是异步的,ajax调用的调用延迟将意味着只有循环变量的最后一个值(in示例= 2)将不是在调用ajax函数时使用的计数器值(0,1,2)。
似乎这可以通过bind或jquery代理函数实现,但是所有示例似乎都使用普通的函数调用示例,我想处理ajax调用中的数据。
这是一个不正确的例子,总是产生2 + val
function addVals()
{
var i;
for(i=0;i<3;i++)
{
$.get(url+"?"+params, function (val) {
console.log(i+val);
}
}
}
这个问题是关于ajax get / post请求的绑定而不是事件处理程序的绑定机制,无论如何,以下代码可以解决问题
for(var i=0;i<30;i++)
{
$.getJSON(url).done($.proxy(function(json) {
console.log(json); // do stuff with your returned data
console.log(this.prop) // correct counter value here
}, {prop: i} ));
}
在这种情况下,outer将是正确的递增值,而inner是不正确的。