2016-03-23 12 views
0

Ich habe eine DataTable, die AJAX-Daten einmal erfolgreich während der Initialisierung der Tabelle abrufen kann.
Jetzt muss ich in der Lage sein, die AJAX-Daten "neu abzurufen", um die DataTable zu aktualisieren, aber , ohne die Tabelle neu zu initialisieren.So ändern Sie AJAX-Daten in DataTables

Nach einigen Recherchen fand ich heraus, dass ich die folgende Zeile "als Funktion" verwenden müssen:

ajax.data(data, settings) 

hier Erklärt: http://datatables.net/reference/option/ajax.data

jedoch. Ich kann nicht finden, wie man das "als eine Funktion" benutzt. Es hat kein Beispiel auf der Seite.

Ich habe es wie folgt versucht.
Meine ursprüngliche Datentabelle Kreation:

launch_datatable_ajax = function(){ 
    get_ajax_data(); 

    dyn_t = $('#dynamic_table').DataTable({ 
      "ajax": { 
       "url":ajax_url, 
       "data":data, 
       "dataSrc":"" 
      }, 
      "columns": [ 
       { "data" : "ID" }, 
       { "data" : "post_title" }, 
       { "data" : "supplier_company" }, 
       { "data" : "img_src" }, 
       { "data" : "tags" }, 
       { "data" : "post_meta" }, 
      ], 

    }); 

} 

Dann habe ich versucht, die Daten mit neuen Parametern neu zu laden. Hier ist, wo ich feststecke.

dyn_t.ajax.data(data,dyn_t.settings); 

Ich glaube, ich für die Parameter richtig bin:
dyn_t.settings gibt einige Informationen über: console.log(dyn_t.settings);
'data' gibt mein Objekt (die Variablen erhalten) auf: console.log(data);

Aber console.log sagt:

Uncaught TypeError: dyn_t.ajax.data is not a function(…)

Antwort

0

Nachladen ist eins mit dyn_t.ajax.reload();.

Allerdings Ihre Anforderung, aktualisierte URL-Parameter an den Server auch zu senden.

Um dies zu tun, müssen Sie das Funktionsargument für Ajax verwenden: http://datatables.net/reference/option/ajax#function

Die Funktion Wieder validates in jedem ajax.reload() Anruf. Aus diesem Grund werden die neuen Parameter gesendet. Also vorausgesetzt, Sie haben ein HTML-Formular mit id my-form, versuchen, etwas wie folgt aus:

  ajax: function (data, callback, settings) { 
       $.ajax({ 
        url: "ajax_url?" + $("my-form").serialize(), 
        data: { start: data.start, count: data.length } 
       }); 
      }, 
+0

Dieser lädt die Ajax aber nicht bekommen die neuen get-Werte. – mesqueeb

+0

Da der Ajax-Aufruf ausgeführt wird, werden die vom Server abgerufenen Daten in der Datentabelle widergespiegelt. Ist das nicht passiert? Können Sie überprüfen, ob sich die neuen Daten vom Server tatsächlich von den ursprünglichen unterscheiden? –

+1

Die Daten werden erneut abgerufen, aber mein Benutzer hat verschiedene Dinge eingegeben, um nach anderen Daten zu suchen. Ich möchte damit sagen, dass ich Ajax neu laden muss, aber mit anderen Werten. Wenn ich nur neu lade, führt es die ursprünglichen get-Werte. Ich habe die Funktion get_ajax_data() verwendet; Ermitteln Sie die neuen get-Werte und fügen Sie sie in die Job-URL ein, die von den Databases verwendet wird. – mesqueeb

Verwandte Themen