Javascript 为什么java脚本没有';t堆栈在while循环中

Javascript 为什么java脚本没有';t堆栈在while循环中,javascript,Javascript,我试图通过将ajax请求中的for循环值发送到php文件“请求中的每个值”,然后文件返回名为“avl”if$data[“avl”]==1的变量来检查数据库中的值,因此,如果不可用,则该变量可用 问题是我检查了一个值流,它们都必须返回1才能继续我的过程,但条件不会等到for循环结束后才进行检查。它在for循环开始之前检查条件,即使代码不是这样。例如:在for循环结束于第50行之前,它执行第100行中的条件 var cartItemContainer = document.getElementsBy

我试图通过将ajax请求中的for循环值发送到php文件“请求中的每个值”,然后文件返回名为“avl”
if$data[“avl”]==1
的变量来检查数据库中的值,因此,如果不可用,则该变量可用

问题是我检查了一个值流,它们都必须返回
1
才能继续我的过程,但条件不会等到for循环结束后才进行检查。它在for循环开始之前检查条件,即使代码不是这样。例如:在for循环结束于第50行之前,它执行第100行中的条件

var cartItemContainer = document.getElementsByClassName('cart-items')[0]
var cartRows = cartItemContainer.getElementsByClassName('cart-row')
var avl_qty = 1;
for (var i = 0; i < cartRows.length; i++) {
    var cartItemContainer = document.getElementsByClassName('cart-items')[0]
    var cartRows = cartItemContainer.getElementsByClassName('cart-row')
    var cartRow = cartRows[i]

    var titleElement = cartRow.getElementsByClassName('cart-item-title')[0]
    var item = titleElement.innerText
    var quantityElement = cartRow.getElementsByClassName('cart-quantity-input')[0]
    var freequantityElement = cartRow.getElementsByClassName('cart-quantity-free-input')[0]

    var quantity = quantityElement.value
    var freequantity = freequantityElement.value

    alert("before avilability ajax")

    $.ajax({
        url: "checkavlqty.php",
        method: "POST",
        data: {

            item: item,
            quantity: quantity,
            freequantity: freequantity
        },
        dataType: "JSON",
        success: function(data) {
            alert(JSON.stringify(data));
            if (data["avl"] == 0) {
                alert("inside condistion")
                avl_qty = 0;
            }
        }
    })

}

alert(avl_qty)
var cartItemContainer=document.getElementsByClassName('cart-items')[0]
var cartRows=cartItemContainer.getElementsByClassName('cart-row'))
var avl_数量=1;
对于(var i=0;i

它总是提醒
1
,即使avl_数量的最终值是
0

您在循环中执行的ajax调用是异步的,这意味着当执行到达
$.ajax[…]
行时,它将“在后台”运行,而正常的执行将在循环中继续

代码中最可能发生的情况是,在循环的ajax响应到达您之前,执行将到达
警报(avl_qty)
行。您可以通过让脚本运行来测试这一点。您将看到它将执行
警报(“Aviliability ajax之前”)
,然后执行
警报(avl_数量)
,最后执行所有
警报(JSON.stringify(data))来自ajax请求


要解决这个问题,您必须等待异步调用完成,甚至是回调。

这意味着所有ajax请求都是异步运行的吗?抱歉这个愚蠢的问题,但我有一个新的发展没有担心,没有愚蠢的问题。是的,AJAX请求总是异步的。如果您想了解更多关于您正在使用的jQueryAjax方法的信息,可以。