我有这样的事情:
for(k in array){
var importantData = array[k];
$.post('user/list',{name:importantData.username},function(data){
console.log('UID of '+importantData.username+' is:'+data.id);
});
}
问题在于“importantData”var,当我在post回调中使用它时,它总是最后一个值,所以我得到类似的东西:
米歇尔的UID是11
米歇尔的UID是6
米歇尔的UID是23
¿如何封装该var以获取每个案例的真实数据?
答案 0 :(得分:1)
您可以为每次迭代创建一个范围并处理此问题。一个简单的例子可以是这样的:
for (var i =0; i<10 ; i++){
(function(j){
$.get('https://stackoverflow.com',function(){
console.log("I am from callback with the value of j ",j);
})
})(i);
}
通过将参数传递给IIFE来更新代码示例。
答案 1 :(得分:0)
使用$.ajax
方法并设置context
参数:
for(k in array) {
var username = array[k].username;
$.ajax({
url: 'user/list',
type: 'POST',
data: { name: username },
context: username,
success: function(result) {
// Here "this" will be the value you passed as context
console.log('UID of '+ this + ' is:' + result.id);
}
});
});
}