Bad Request beim Einsatz von DataTables für jQuery

Bei der Erstellung von Administrationsoberflächen können DataTables hervorragende Dienste leisten. Die tollen Funktionen können aber zu einem schwerwiegenden Fehler führen.

Bad Request
Your browser sent a request that this server could not understand.
Size of a request header field exceeds server limit.
Cookie

Erscheint diese Fehlermeldung, geht auf dieser Internetseite nichts mehr. Auch ein Browserneustart hilf dabei nicht. Der Grund dafür ist, dass Cookies max. 4 KB groß sein dürfen und es max. 20 Cookies pro Domain geben darf.

Beim Einsatz von DataTables, einem table plug-in für jQuery, mit der Option

"bStateSave": true

kann es aber unter Umständen dazu kommen, dass diese Beschränkungen überschritten werden – und dann erscheint dieser Fehler.
Mit der Option “bStateSave” merkt sich der Browser Such- bzw. Filterangaben des Kunden um diese beim neuerlichen Aufruf der Seite automatisch wieder auszuführen. Eine sehr hilfreiche Option, die kein Kunden missen möchte.

Das entsprechenden Cookies zu löschen beseitigt zwar den Fehler sofort, allerdings beseitigt man damit nur die Fehlermeldung und nicht das Problem.

Ab der Version 1.9 von DataTables kann man diesen Fehler in neueren Browsern ganz einfach beseitigen. Dafür ergänzt man lediglich ein paar Zeilen Code:

"bStateSave": true,
 "fnStateSave": function (oSettings, oData) {
      localStorage.setItem( 'DataTables_'+window.location.pathname, JSON.stringify(oData) );
 },
 "fnStateLoad": function (oSettings) {
     return JSON.parse( localStorage.getItem('DataTables_'+window.location.pathname) );
 }

Mit diesen Angaben verlagert man das Speichern der Eingaben von den Cookies in den localStorage des Browsers.

Weiterführende Links:

 

Getagged mit: , ,
Veröffentlicht unter Web, HTML, CSS

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Archiv