Javascript 没有正常运行,似乎跳过了代码

Javascript 没有正常运行,似乎跳过了代码,javascript,ajax,jquery,Javascript,Ajax,Jquery,我让下面的代码在中运行。每个函数。然而,当所有设置和完成时,我发出警报(插入)或警告它们出现的任何其他变量0,这是我声明它们时设置的。我确信它们在范围之内。我觉得这与ajax的时间有关,因为如果我在每次调用后都发出警报,计数器系统就会工作。有什么想法吗?此外,我确信适当的if语句在我附加警报时被调用(如上所述,当我执行此操作时,计数器工作),并且它们正确触发,并且没有从控制台中产生错误代码 $.ajax({ type: "POST", url: "/php/filename.ph

我让下面的代码在
中运行。每个
函数。然而,当所有设置和完成时,我发出
警报(插入)
或警告它们出现的任何其他变量
0
,这是我声明它们时设置的。我确信它们在范围之内。我觉得这与ajax的时间有关,因为如果我在每次调用后都发出警报,计数器系统就会工作。有什么想法吗?此外,我确信适当的if语句在我附加警报时被调用(如上所述,当我执行此操作时,计数器工作),并且它们正确触发,并且没有从控制台中产生错误代码

$.ajax({
    type: "POST",
    url: "/php/filename.php",
    data: {
        one: $('#1').val(),
        two: $('#2').val(),
        three: $('#3').val(),
        four: $('#4').val(),
        five: $('#5').val(),
        six: $('#6').val(),
        seven: $('#classlist').val(),
        id: $('#7').html()
    }
}).done(function(msg) {
    if (msg == "inserted") {
        inserted++;
    }
    else if (msg == "updated") {
        updated++;
    }
    else if (msg == "duplicate") {
        duplicate++;
    }
    else if (msg == "0") {
        fail++;
    }
});

Ajax是异步的,您的警报在Ajax完成之前发生。将所有ajax返回值存储在一个数组中,将它们全部传递给.when,然后使用它来警告变量的值

var promiseArr = [], inserted = 0;

for (var i = 0; i < 30000; i++) { // <--- unrealistic number of iterations
    promiseArr.push($.ajax({url:"foo.php?id=" + i}).done(function(){
        inserted++;
    }));
}
$.when.apply($,promiseArr).done(function(){
    alert(inserted);
});
var promiseArr=[],inserted=0;

对于(var i=0;i<30000;i++){//我是根据您的喜好编辑它的,但有人抢先编辑了它,很抱歉我给您带来了痛苦,从我的编辑器中复制粘贴后,它就这样出现了。提醒消息并查看响应…我做了,这使一切都正常工作。这个问题是当我运行所有ajax调用时没有提醒(暂停)然后尝试访问它所做的任何事情。我现在将尝试此操作,但这将如何导致我的问题?在返回1个ajax调用之前是否调用了下一个ajax调用?不应该通过.done阻止这一点吗?因为我的所有响应都应该以某个点或另一点的形式返回?不,您的所有ajax请求都会立即发送。它们甚至可能会按顺序结束。T在ajax请求完成之前(在调用.done之前)执行ajax请求之后的代码。哦!我明白你的意思了,我不敢相信我没有看到/考虑到这一点!好的,让我检查一下所有内容!谢谢!