【发布时间】:2014-12-17 02:15:18
【问题描述】:
我有一个包含多个值的变量(对象)。
对于这些值中的每一个,我使用“post”和“done”方法执行 AJAX,如下所示。
能否请您帮助我理解为什么变量“counter”在循环中会很好地递增(第一个 console.log show, 1, 2, 3,4, ....)。
但是当循环结束时,第二个“console.log”在 0 处显示“counter”?我错过了什么吗?
$('.confirm_suppression').on('click',function(){
var counter = '0';
$.each(row_to_delete, function(data){
$.post(
"/mysql/function_manager.php",
{
'type_request' : 'remove_user_from_host',
'user_id' : iduser,
'host_id' : row_to_delete[data].id
},
"json"
).done(function(data) {
var array = JSON.parse(data);
if(array.status == 'OK'){
++counter;
console.log('value counter in loop : ' + counter);
$('#dialogboxhead').val('in progress');
};
if(array.status == 'KO'){
alert(array.msg);
};
});
});
console.log('value counter : ' + counter);
});
`
谢谢。
【问题讨论】:
-
每次循环,您都会开始一个
post()调用,该调用将在稍后的某个时间结束。然后循环退出,计数器(奇怪地)'0'而不仅仅是0。一段时间后,post调用完成,同时增加了counter。
标签: javascript jquery ajax post each