我正在尝试使用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
不可访问。我猜是因为它尚未启动。
如何让result
和qtyArray
同时更新我的表格。
修改
以下是来自第一次ajax调用的结果示例: https://jsfiddle.net/8zdey0cv/
答案 0 :(得分:-1)
好吧,我不认为这是一个非常好的方法。您是否可以在 SQL 查询中设置JOIN
以结合外部和内部 AJAX 以避免2次 AJAX 请求?
如果没有,请尝试创建另一个包含内部 AJAX 请求的函数,并在循环中调用它。