1

Javaサーブレットで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);

[OK]、[OK]を押すと、各反復でデータテーブルに新しい行が正確に挿入されますが、アラートを削除すると、各反復で同じレコードが挿入され、最初のレコードまたは最後のレコードになります。

警告なしに新しいデータを含む行を挿入するにはどうすればよいですか?

注:oTable.fnAddData()は、 Datatables.netに行を追加するために使用されます

4

1 に答える 1

0

まず、最初の ajax-response ですべてのデータを送信することをお勧めします。1 人でできるのに、なぜそんなに多くの 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]]);
                });
            });
        });
    });
});
于 2012-06-25T19:54:37.560 に答える