2

fnRowCallback 内で関数を実行しようとしています。jQuery は次のエラーを報告します。

too much recursion
/js/jquery.js
Line: 4

この終わりのないループが見つかりません。 alert(aData.toSource());ループしようとしている配列を示しています。

    var clientId = 1234;
    var reportData = $('#report-data').dataTable({
        "bProcessing": true,
        "bServerSide": true,
        "sAjaxSource": "?go=report&do=process&action=get-report",
        "fnServerData": function ( sSource, aoData, fnCallback ) {
            aoData.push({ "name": "client_id", "value": clientId });
            $.getJSON( sSource, aoData, function (json) { 
                fnCallback(json);
            });
        },
        "fnRowCallback": function (nRow, aData, iDisplayIndex, iDisplayIndexFull) {
            formatDates(nRow,aData);
        },
    });

    function formatDates(nRow,aData) {
//      alert(aData.toSource());
        for(i=0; i!=aData.length; i++) {
            if (aData[i].match(/^([0-9]{4}-[0-9]{2}-[0-9]{2})T([0-9]{2}:[0-9]{2}):[0-9]{2}\.[0-9]{3}$/gi)) {
                reportData.fnUpdate('New Date Format', nRow['_DT_RowIndex'], i);
            }
        }
    }
4

1 に答える 1

3

各行に対して、fnRowCallbackが呼び出され、 が呼び出され、 が呼び出され、 が呼び出されfomatDatesfnUpdateテーブルが再描画され、fnRowCallback...が呼び出されます。

編集:これについてもっと考えてみると、再描画を強制すると、再帰の問題が再び発生する可能性があります。代わりに、fnRowCallback の fnUpdate への呼び出しを次のように置き換えます。

$(nRow).find('td:eq(' + i + ')').text('New Date Format');

これにより、i 番目の TD 要素のテキストが「新しい日付形式」に更新されます。これは、実行したいように見えます。

于 2013-04-23T12:57:12.217 に答える