Reputation: 7745
I need to access the i
variable from the loop, in the success function. How do I do that?, can I pass it in to the function?
function save(){
var mods=model.things;
for (i in mods) {
var mod= mods[i];
$.ajax({
url: "duck"
type: "put",
data: JSON.stringify(mod),
success: function(responce_json) {
var j=i;
}
});
}
}
Upvotes: 2
Views: 94
Reputation: 45155
One way:
success: (function(i) { return function(responce_json) {
var j=i;
}})(i)
This uses an Immediately Invoked Function Expression (IIFE) to create a closure that will capture the current value of i
.
Incidently, for...in
is considered bad practice by a lot of JavaScript programmers, but if you need to use it, you should probably at least include a check for hasOwnProperty
Upvotes: 3
Reputation: 755131
Create another function
that takes i
as a parameter thus creating a local copy for each iteration
var f = function(i) {
var mod= mods[i];
$.ajax({
url: "duck"
type: "put",
data: JSON.stringify(mod),
success: function(responce_json) {
var j=i;
}
});
}
for (iter in mods) {
f(iter);
}
Upvotes: 1