1

jquery データテーブルを使用してレコードを表示しています。データベースから約 12000 レコードを取得し、それを html テーブルに追加してから、jQuery データテーブルに変換しています。

データテーブルへの変換には非常に長い時間がかかります。約 15 分間待機しましたが、まだテーブルがロードされていません。

それを解決する方法はありますか?

4

7 に答える 7

1

遅延の主な理由は、12000 レコードに対応する、ページに表示しようとしている大量の HTML 要素です。唯一の解決策は、それをできるだけ減らすことです。

  1. レコードを html に配置しないでください。JSON 経由でページに送信してください<script>

  2. データテーブルのページあたりのレコードを制限します。最初にページングを有効にしbPaginate: true、2 番目にページごとにレコードを設定しますiDisplayLength: 25

  3. yourDataTable.fnAddData(data)データセットをロードするために使用します。

于 2014-05-08T10:19:04.467 に答える
1

クエリで使用されるキー列でTrust Indexingが有効になっています。また、結果を HTML に追加して DataTable に変換するにもかかわらず、次のことをお勧めします。

$('#table_id').DataTable({
    ajax: {
      url: url_to_data,
      dataSrc: "",                  
      contentType: "application/json",
      type: "POST",
      data : function(d) {
          return JSON.stringify({ param1: param1_val, param2: param2_val });
      },
   },
   pageLength: 30,
   processing: true,
   serverSide: true, //server side processing for larger datasets
   columns: [
      { sTitle: "col_1", data: "col_1_field" },
      { sTitle: "col_2", data: "col_2_field" },
   ],
});
于 2016-09-09T02:17:56.953 に答える
0

これを試して..

<script type="text/javascript" src="jquery.dataTables.js"></script>
    <script type="text/javascript" src="dataTables.scrollingPagination.js"></script>
    <script type="text/javascript">
        $(document).ready(function() {
            $('#example').dataTable( {
                "sPaginationType": "scrolling",
                 "bProcessing": true

            } );
        } );
    </script>
于 2013-07-17T11:46:18.697 に答える
0

2 つの反復があるため、ロードに時間がかかります。代わりに、次のようなパラメーターを使用してサーバーからデータテーブルを直接ロードします。

       "sAjaxSource": '#yourServerCallHereWhichReturnsJSON#',
       "fnServerData": fnServerObjectToArray(aPublicationElements),

ここで、「aPublicationElements」は、次のような JSON 要素を含む変数です。

var aPublicationElements = ['jsonParameter1','jsonParameter2','jsonParameter3','jsonParameter4'] ;

そして、これらのデータをパラメーター内で次のようにレンダリングします。

       "aoColumns": [
                        {"sTitle":"Title1",
                            "render": function(data, type, oObj) {
                                return oObj[0];
                            }   
                        },
                        {"sTitle":"Title2",
                            "render": function(data, type, oObj) {
                                return oObj[1];
                            }   
                        },
                        {"sTitle":"Title3",
                            "render": function(data, type, oObj) {
                                return oObj[2];
                            }   
                        },
                        {"sTitle":"Title4",
                            "render": function(data, type, oObj){
                                return oObj[3];
                            }
                        }
                        }
                    ],

関数「fnServerObjectToArray」は、サーバー オブジェクトを配列に変換する次のようなものです。

fnServerObjectToArray = function ( aElements ){
    return function ( sSource, aoData, fnCallback ) {
        $.ajax({
            "dataType": 'json',
            "type": "POST",
            "url": sSource,
            "data": aoData,
            "success": function (json) {
                var a = [];
                for ( var i=0, iLen=json.length ; i<iLen ; i++ ) {
                    var inner = [];
                    for ( var j=0, jLen=aElements.length ; j<jLen ; j++ ) {
                        inner.push( json[i][aElements[j]] );
                    }
                    a.push( inner );
                }
                json.aaData = a;
                fnCallback(json);
            }
        });
    }
};

お役に立てれば。

于 2016-06-20T06:41:26.177 に答える
0

pagination一度に少数のレコードのみを使用および表示することをお勧めします。http: //datatables.net/plug-ins/paginationをご覧ください。一度に 12000 件のレコードを表示すると、ユーザー エクスペリエンスが向上するとは言えません。ajax とページネーションを使用して、各ページのデータを読み込みます。

于 2013-07-17T11:41:06.013 に答える