philtune philtune - 1 month ago 7
Ajax Question

Passing variables to $.ajax().done()

I'm lost. How might I pass a loop variable to an AJAX .done() call?

for (var i in obj) {
$.ajax(/script/).done(function(data){ console.log(data); });
}


Obviously, if I were to do
console.log(i+' '+data)
i would return the very last key in the object
obj
on every single iteration. Documentation fails me.

Answer

You can use a closure (via a self executing function) to capture the value of i for each invocation of the loop like this:

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);
}
Comments