2017-08-21 5 views
2

Ich habe eine Tabelle, in der ich jQuery Datatable verwende. Die Tabelle wird alle 15 Sekunden mit neuen Daten aktualisiert. Ich verwende die neueste Version von Datatable.Refresh Datatable mit neuen Daten

Wie kann ich die Datentabelle mit neuen Daten neu initialisieren, ohne eine klare Methode zu verwenden, die sich auf die Benutzeroberfläche auswirkt?

Mein Code:

jQuery.ajax({ 
    type: 'POST', 
    url: /list_tasks', 
    data: ajaxData, 
    spinner: true, 
    success: function (response) { 
     $('#task_table').html(response.html) 
     if ($.fn.DataTable.isDataTable('#task_table')) { 
      $('#task_table').DataTable().destroy(); 
     } 
     var dataTable=$('#task_table').DataTable({ 
      deferRender:true, 
      destroy: true, 
      scrollCollapse: true, 
      scroller:  true, 
      scrollY:  "200px", 
      bFilter:false, 
      bInfo: false, 
      bLengthChange:false, 
      initComplete: function(settings, json) { 

      }, 
      fnDrawCallback:function(){ 

      } 
     });   
    } 
}); 
+1

versuchen, dieses 'dataTable.ajax. reload(); ' –

+0

Haben Sie versucht, Zeilen-API von jQuery Datatable hinzuzufügen? Ref Link: 'https: // datatables.net/examples/api/add_row.html' – Kashyap

Antwort

1

Anstatt das Rad neu zu erfinden, sollten Sie in ajax Funktion gebaut auf Tables verlassen. Wenn Sie das tun, können Sie die Tabelle sehr einfach aktualisieren, indem ajax.reload() mit:

var dataTable =$('#task_table').DataTable({ 
    ajax: { 
    url: '/list_tasks', 
    data: ajaxData 
    }, 
    deferRender:true, 
    scrollCollapse: true, 
    scroller:  true, 
    scrollY:  "200px", 
    bFilter:false, 
    bInfo: false, 
    bLengthChange:false, 
    initComplete: function(settings, json) { 
    }, 
    fnDrawCallback:function(){ 
    } 
}); 

setInterval(function() { 
    dataTable.ajax.reload() 
}, 15000); 

aktualisieren. Sie werden nie in der Lage sein, Flackern oder Auswirkungen auf die Benutzeroberfläche zu verhindern, wenn Sie wiederholt eine Tabelle in das DOM einfügen und entfernen und anschließend als Datentabelle formatieren. Ein weiterer Ansatz könnte sein, auf den Tisch Code in einem anderen PHP-Skript zu trennen und legen Sie sie in einem Iframe:

<iframe src="table.php" id="table"></iframe> 

dann die iframe aktualisieren sich alle 15 Sekunden:

setInterval(function() { 
    $('#table')[0].contentWindow.location.reload(true); 
}, 15000); 
+0

HTML-Tabelle wird mit serverseitigem Template erstellt, daher kann datatable.ajax nicht verwendet werden – pareshm

+0

@pareshm, warum nicht die Möglichkeit nutzen, nicht das ganze zu erstellen Tabellen Markup Server? Es wird sicherlich schneller laufen und einen flüssigeren Fluss geben, d. H. Keine Auswirkungen auf die Benutzeroberfläche haben. Es ist ziemlich einfach. Hier ist ein Beispiel ** http: //jsfiddle.net/0f9Ljfjr/957/** – davidkonrad

+0

keine kann nicht coz viele Klassen und Betrieb sind derzeit auf dieser Tabelle von der Serverseite komplett neuen Ansatz ist sehr viel zeitaufwendig vor getan war nicht mit Datatable jetzt wollen – pareshm

Verwandte Themen