没有正确值的循环中的ajax

时间:2013-12-03 06:04:03

标签: javascript jquery ajax

我在循环中遇到了ajax的问题​​。 我发现循环变量“i”没有增加。 假设array1中有3个项目,脚本将提醒4,4,4 但不像我预期的那样1,2,3。 有人能给我一个暗示吗? 非常感谢。

var i;
for(i=1;i<=array1.length;i++){
tmp=array1[i-1];
$.ajax
({
    type: "POST",
    url: "ajax_feedback.php",
    data: {id : tmp.id},
    success: function(msg)
    {   
        alert(i);
    }
});
}

2 个答案:

答案 0 :(得分:0)

尝试:

var len = array1.length;
show(0);
function show(i){
    var tmp=array1[i-1];
    $.ajax({
        type: "POST",
        url: "ajax_feedback.php",
        data: {id : tmp.id},
        error:function(){
            if(i < len){
                show(i+1);
            }
        },
        success: function(msg){   
            alert(i);
            if(i < len){
                show(i+1);
            }
        }
    });
}

答案 1 :(得分:0)

所以这个问题的解决方案是:

var i;
for(i=1;i<=array1.length;i++){
tmp=array1[i-1];

ajaxCall(i);

}

function ajaxCall(i){

$.ajax
({
    type: "POST",
    url: "ajax_feedback.php",
    data: {id : tmp.id},
    success: function(msg)
    {   
    alert(i);
    }
});

}

每当你在循环中进行ajax调用时。永远不要尝试直接调用它。这是因为ajax调用是异步的,直到成功代码从服务器返回时,i值增加,因此,它显示为4 ,4,4为警报输出。