2015-05-05 8 views
5

Ich verwende das jQuery-Plugin Datentabellen mit den ajax und serverSide Optionen. Die documentation specifies Felder, die mit jeder Anfrage enthalten sind. Da sind viele von denen. Und die meisten fügen meinem Anwendungsfall nicht wirklich etwas hinzu. Hier finden Sie einen kurzen Auszug der Abfragezeichenfolgenparameter aus einer Anfrage.Unterdrücken Sie unnötige Parameter in Datatables Ajax Anfrage?

columns[0][data]:0 
columns[0][name]: 
columns[0][searchable]:true 
columns[0][orderable]:true 
columns[0][search][value]: 
columns[0][search][regex]:false 
columns[1][data]:1 
columns[1][name]: 
columns[1][searchable]:true 
columns[1][orderable]:true 
columns[1][search][value]: 
columns[1][search][regex]:false 

Dies gilt für jede Spalte in der Tabelle. Dies erstellt eine sehr lange Abfragezeichenfolge, wenn 10 Spalten verwendet werden. Tatsächlich stoße ich auf meinem Webserver auf URL-Längenbeschränkungen.

Gibt es eine Möglichkeit, die Aufnahme bestimmter Eigenschaften zu unterdrücken oder Eigenschaften zu unterdrücken, die leer sind oder einen Standardwert haben? Die Dokumentation hat keine offensichtliche Möglichkeit, die Größe der Abfragezeichenfolge zu begrenzen.

+0

[https://datatables.net/forums/discussion/6535/simpler-shorter-urls-for-server-side-datatables](https://datatables.net/forums/discussion/6535/ einfacher kürzere-Urls-for-Server-Side-Datentabellen) – markpsmith

Antwort

11

Ich fand einen anständigen Weg, um dieses Problem zu lösen. Datatables bietet eine integrierte Methode zum Ändern der Ajax-Abfrageparameter, die unmittelbar vor der Anforderung aufgerufen werden. Sie können es so spezifizieren. In meinem Fall interessiert mich nicht das gesamte Array-Attribut columns, also entferne ich es einfach.

var options = { 
     sDom: "lftip", 
     /* set your options to suit your taste */ 
    }; 

    options.ajax = { 
     url: ajaxUrl, 
     data: function(data) { 
      // manipulate data used in ajax request prior to server call 
      delete data.columns; 
     } 
    }; 

    $el.dataTable(options); 
+0

Dank es funktioniert, Herr @recursive –