2017-11-27 4 views
0

Ich benutze serverseitige jquery Datentabelle 1.10.16. Ich möchte die Daten neu laden, indem ich die datable Ajax mit aktualisierten Parametern anfordere. die Datentabelle neu zu laden ich die unten Datentabelle api bin mit:Datatables ajax reload ignoriert dynamisch aktualisierte Anfrageparameter

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

Meine Datentabelle initailization unten gegeben:

$('#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 und User_id sind globale Variablen, die wie folgt aktualisiert werden:

 $('#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(); 
      }); 

Wie aktualisierte Parameter übergeben?

+0

Haben Sie versucht, den Cache in den Einstellungen der Databases zu deaktivieren? –

+0

Wie geht das? – subhajit

+0

Ich habe "Cache" hinzugefügt: false, zu Datentabelle bei der Initialisierung, aber immer noch alte Parameter werden beibehalten. – subhajit

Antwort

0

Deaktivieren Sie das Caching für die Tabelle in den oSettings [dieser Parameter ändert sich basierend auf der DT-Version. Siehe Dokumentation der von Ihnen verwendeten Version] Nach

table.ajax.reload(); 

ruf dies sofort.

table.ajax.clearAjaxParams(); 

Auch dies ändert sich mit Version basiert. Siehe Dokumentation.

0

Schließlich löste es irgendwie. In Zukunft Menschen brauchen:

$(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

denke ich, wenn Sie nur die Datatable neu zu zeichnen, eine neue Post-Anforderung mit den aktualisierten Parameter werden an den Server gesendet werden.

$('#dateSelector').on('apply.daterangepicker', function(ev, picker) { 
    $('#user_data').DataTable().draw(); 
}