jquery每个|增量变量不起作用

时间:2014-10-21 18:32:06

标签: javascript jquery ajax post each

我有一个包含多个值的变量(对象)。

对于这些值中的每一个,我使用" post"执行AJAX。和"完成"方法如下。

你能帮我理解变量" counter"在循环中很好地递增(第一个console.log显示,1,2,3,4 ......)。

但是当循环结束时,第二个" console.log" show" counter"在0?我错过了什么吗?

$('.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);
});

`

谢谢。

1 个答案:

答案 0 :(得分:2)

因为您使用$.post执行异步任务,称为AJAX调用。这意味着如果AJAX调用完成,则调用done()部分。虽然这个AJAX调用需要一些时间来执行其余的功能。因此,在此部分console.log('value counter : ' + counter);之前调用此部分console.log('value counter in loop : ' + counter);