2016-09-13 27 views
0

私はDatatablesプラグインを使用して、ajaxプロパティを使用してサーバーからテーブルデータを取得し、dataSrcプロパティを使用して変換します。私のDataTableの定義:datatables ajaxレスポンスが成功するとdataSrc関数が呼び出されない

var my_table = $('#my_table').dataTable({ 
    "processing": true, 
    "serverSide": true, 
    "ajax": { 
     "url": "/my/url", 
     "type": "POST", 
     "dataSrc": function(json) { 
      console.log('json', json); 
      return format_my_table_data(json.data); 
     } 
    }, 
    "deferLoading": found_rows, 
    "data": initial_my_table_data, 
    "ordering": true, 
    "order": [[1, "desc"]], 
    "lengthMenu": [ 
     [25, 50, 100], 
     [25, 50, 100] 
    ], 
    "columns": my_table_columns 
}); 

は初期の負荷が正常に動作し、列を注文し、時にはを作品を検索するが、ほとんど私は有効なJSONで正常にAJAX呼び出しの戻り値を参照してください(私はjsonlint.comを使用して検証)とテーブルがで立ち往生しています「処理中です...」またはテーブルがまったく変更されないことがあります。サーバから

JSON: {"recordsTotal":379,"recordsFiltered":378,"draw":25,"data":[{...}]}

に応じ600msの〜1600msの間の合計時間を有する各時間(類似しているiはAJAXリクエストが送信されて見ることができるコンソールでネットワークと応答を検査返された行数)、dataSrc関数内のconsole.logは呼び出されず、コンソールにはjavascriptエラーはありません。何がありますか?

+0

サーバ上でリクエストで受け取った同じ「draw」パラメータを返していますか?要求と応答の 'draw'値が一致しない場合、プラグインは応答を破棄することがあります。 –

+0

@ Gyrocode.com返された結果の数が描画値よりも小さい場合は、draw値が3の場合に3行しか見つけられなかったとしたらどうなるでしょうか?あるいは、私は "描く"ものを誤解しているかもしれません。 –

答えて

1

スクリプトでは、drawパラメータが、要求のdrawパラメータと同じ値を返します。私はそれが1で始まり、そしてすべての要求で増分すると信じています。 manualから

draw

このオブジェクトに対する応答であること描画カウンタ - データ要求の一部として送信drawパラメータから。 セキュリティの理由により、は、クロスサイトスクリプティング(XSS)攻撃を防ぐために、drawパラメータで送信した内容をクライアントに返すのではなく、このパラメータを整数にキャストすることを強くお勧めします。

+0

ありがとうございます、私はテーブルの描画の数ではなく、返される行の数として描画属性を誤解しました。返された描画値を、渡されたものだけに変更しました。現在は動作しています。 –

関連する問題