jquery将ajax调用的结果传递给内部ajax调用

时间:2017-01-20 14:31:38

标签: jquery ajax

我正在尝试使用jquery根据两个ajax调用来更改表的内容。其中一个ajax调用位于外部调用之内。我试图简化我的代码:

$.ajax({
    type: "POST",
    url: "../actions.php",
    data: { username: username, catId: $('#prodCat').val(), brandId: $('#prodBrand').val(),
            typeId: $('#prodType').val(), NameId: $('#prodName').val()},
    success: function(data){
        $('#prodList').empty();
        var result = JSON.parse(data);
        var tableRows='';
        for(var i = 0; i < result.length; i++) {
            var qtyArray = [];
            $.ajax({
                type: "POST",
                url: "../actions.php",
                data: { action : 'get_product_carton_single', mainStockId: <?php echo "'".$stockId."'" ?>, productId: result[i]['id']},
                success: function(databack){
                    qtyArray = databack;
                    console.log(qtyArray);
                    tableRows += '<tr>';
                    tableRows += '<td>' + result[i]['id'] + '</td>';
                    tableRows += '<td>' + (i+1) + '</td>';
                    tableRows += '<td>' + result[i]['productname'] + '</td>';                    
                    tableRows += '<td>' + qtyArray['carton'] + '</td>';
                    tableRows += '<td>' + qtyArray['single'] + '</td>';
                    tableRows += '<td class="quantityField"><input class="quantityInput" type="text" name="'+result[i]['id']+'" value="0" data-product-id="'+result[i]['id']+'" data-max-value="'+result[i]['quantity']+'"></td>';
                    tableRows += '</tr>';
                }
            });
        }
        $('#prodList').append(tableRows);
    }
});

但是我收到以下错误:

Cannot read property 'id' of undefined

但是当我把这部分放在一边时:

tableRows + =&#39;&#39;;

            tableRows += '<td>' + result[i]['id'] + '</td>';
            tableRows += '<td>' + (i+1) + '</td>';
            tableRows += '<td>' + result[i]['productname'] + '</td>';                    
            tableRows += '<td>' + qtyArray['carton'] + '</td>';
            tableRows += '<td>' + qtyArray['single'] + '</td>';
            tableRows += '<td class="quantityField"><input class="quantityInput" type="text" name="'+result[i]['id']+'" value="0" data-product-id="'+result[i]['id']+'" data-max-value="'+result[i]['quantity']+'"></td>';
            tableRows += '</tr>';

在内部ajax调用之外,result变量可访问,但qtyArray不可访问。我猜是因为它尚未启动。

如何让resultqtyArray同时更新我的​​表格。

修改

以下是来自第一次ajax调用的结果示例: https://jsfiddle.net/8zdey0cv/

1 个答案:

答案 0 :(得分:-1)

好吧,我不认为这是一个非常好的方法。您是否可以在 SQL 查询中设置JOIN以结合外部和内部 AJAX 以避免2次 AJAX 请求?

如果没有,请尝试创建另一个包含内部 AJAX 请求的函数,并在循环中调用它。