2017-11-27 2 views
0

私はサーバーサイドのjquery datatable 1.10.16を使用しています。私は更新されたパラメータでdatatable ajaxを要求してデータをリロードしたいと思っています。Datatables ajax reloadは動的に更新されるリクエストパラメータを無視しています

$('#user_data').DataTable().ajax.reload(); 

私のDataTable initailizationは以下の通りである:

 $('#dateSelector').on('apply.daterangepicker', function(ev, picker) { 
       DATE_RANGE[0] = picker.startDate.format('DD-MM-YYYY'); 
       DATE_RANGE[1] = picker.endDate.format('DD-MM-YYYY'); 
       console.log(DATE_RANGE); // here I am getting updated value properly 
// reloading the datatable , but the parameters are the previous one 
       $('#user_data').DataTable().ajax.reload(); 
      }); 

$('#user_data').DataTable({ 
     // to hide search filter 
     "searching": false, 
     "lengthMenu": [[5, 25, 50], [5, 25, 50]], 
     processing: true, 
     serverSide: true, 
     ajax: { 
      "url": '/admin/getStats', 
      "data": {user_id: user_id, date_range: JSON.stringify(DATE_RANGE)}, 

     }, 
     columns: [ 
      {data: 'name', name: 'name'}, 
      {data: 'date', name: 'date'}, 
      {data: 'country', name: 'country'} 
     ] 
    }); 

DATE_RANGEとUSER_IDは、次のように更新されているグローバル変数であり、私はDataTableのAPIの下に使用していたDataTableをリロードするには

更新されたパラメータを渡すにはどうすればよいですか?

+0

データテーブルの設定でキャッシュを無効にしてみましたか? –

+0

これを行うにはどうすればいいですか? – subhajit

+0

私は "cache":falseを初期化時にdatatableに追加しましたが、それでもなお古いパラメータは永続化されています。 – subhajit

答えて

0

oSettings内のテーブルのキャッシュを無効にする[このパラメータはDTバージョンに基づいて変更されています。使用しているバージョンのドキュメントを参照してください]

table.ajax.reload(); 
を呼び出した後、すぐに呼び出し、これを:。

table.ajax.clearAjaxParams(); 

これもバージョンベースに変更します。ドキュメントを参照してください。

0

最後に何とか解決しました。未来人でなければならないことがあります

$(document).ready(function() { 
    fetchData(); 
}); 

function fetchData() { 
$('#user_data').DataTable({ 
     // to hide search filter 
     "searching": false, 
     "lengthMenu": [[5, 25, 50], [5, 25, 50]], 
     processing: true, 
     serverSide: true, 
     ajax: { 
      "url": '/admin/getStats', 
      "data": {user_id: user_id, date_range: JSON.stringify(DATE_RANGE)}, 

     }, 
     columns: [ 
      {data: 'name', name: 'name'}, 
      {data: 'date', name: 'date'}, 
      {data: 'country', name: 'country'} 
     ] 
    }); 
} 

$('#dateSelector').on('apply.daterangepicker', function(ev, picker) { 
..... 
.... 

    $('#user_data').DataTable().destroy(); 
    fetchData(); 
}); 
0

私はあなただけのdataTableを再描画した場合、更新されたパラメータで新しいポスト要求をサーバに送信することになると思います。

$('#dateSelector').on('apply.daterangepicker', function(ev, picker) { 
    $('#user_data').DataTable().draw(); 
} 
関連する問題