循环根据长度精确迭代,但每次迭代中插入相同的记录

The loop iterate accurately according to length, but same record insert in each iteration

本文关键字:迭代 插入 记录 循环      更新时间:2023-09-26

我正在使用Java servlet的 Datatables.net:

$(document).ready(function () {
    $('#dayClosing').click(function () {
        $.post("RecallHoldTrx", {
            TrxHoldID: oData[0]
        }, function (data2) {
            for (k = 0; k < data2.length; k++) {
                var getItemCode = data2[k];
                $.post("GetItemDetail", {
                    itemCode: getItemCode
                }, function (data) {
                    oTable.fnAddData([data[0], data[1]]);
                });
            }
        });
    });
});

循环根据其长度精确迭代,但每次迭代中插入相同的记录;但是

当我把alert()放在var getItemCode = data2[k];之后时

var getItemCode = data2[k];
alert(getItemCode);

当我按确定,确定时,每次迭代都会准确地在数据表中插入新行。但是当我删除警报时,每次迭代中插入相同的记录,它有时是第一个记录或某个时间最后一个记录。

我们如何在没有警报的情况下插入带有新数据的行?

注意:oTable.fnAddData() 用于在 Datatables.net 中添加行

首先,我建议在第一个 ajax-reponse 中发送所有数据。如果可以由一个人完成,为什么要进行这么多 ajax 调用?

我认为您在范围界定方面有问题。可以使用 $.each 循环访问结果集。喜欢这个:

$(document).ready(function () {
    $('#dayClosing').click(function () {
        $.post("RecallHoldTrx", {
            TrxHoldID: oData[0]
        }, function (data2) {
            $.each(data2,function(index,item) {
                $.post("GetItemDetail", {
                    itemCode: item
                }, function (data) {
                    oTable.fnAddData([data[0], data[1]]);
                });
            });
        });
    });
});