Umgang mit session-time-outs in Datentabellen (mit server-side-Datenquelle Verarbeitung)
Ich habe eine datatables form ist gesichert durch eine serverseitige Ajax-Datenquelle (die verwendet eine struts-Aktion im backend die Anforderung zu verarbeiten, Holen Sie die Daten und senden Sie eine JSON-Antwort).
Die server-side-Betrieb laufen muss, im authentifizierten Modus, d.h. es muss eine aktive Sitzung.
Was ist der beste Weg zu handhaben session-timeout-Fehler in den Datentabellen? Derzeit zeigt nur eine JSON-Formatierung Fehler, die nicht die beste option für den Benutzer. Ich will nicht zu gehen, und ändern der Datentabellen code-aus offensichtlichen Gründen (Kompatibilität, zukünftige Wartbarkeit, etc). Gibt es eine saubere Art des Umgangs mit Fehlern?
Ich dachte entlang der Linien von der Einbettung Fehlermeldung in der JSON-Antwort, aber wo ist der beste Ort, um Sie abzufangen in der front-end-flow?
EDIT: ich nehme an, der beste Ort für diese Nachbearbeitung wäre in fnServerData, bin ich richtig?
- Das ist richtig; man definiert einfach eine
error
Rückruf.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde Feuer wieder ein JSON-Antwort mit irgendeine Art von Fehler-code. Um es zu verarbeiten, müssen Sie definieren, fnServerData als Sie vermutet. Allerdings würde ich stark darüber nachdenken, die Nutzung Fall vor Verwendung der error-callback aus diesem Grund:
Fehler ist einfach jedes problem das abrufen der Ressource ist, und verwendet-status-codes. Lassen Sie uns sagen, dass die Sitzung beendet wird auf dem server. User-Anfragen die Daten, die der server sendet dann wieder eine 500-Fehlermeldung. Error-callback sagt, "Gut, dass sog. Lassen Sie uns redirect auf eine login-Seite." Alles funktioniert Super.
Aber... der user stellt eine Anfrage. Die Anfrage nimmt ein wenig Zeit in die aus welchem Grund auch immer (große Daten-set, Netzwerk-Bedingungen). In der Zwischenzeit entscheidet der Anwender zur Navigation zu einer anderen Seite, eine Unterbrechung der call-response-Schleife. Keine Reaktion, den Fehler-Rückruf ausgelöst wird, und der Benutzer wird umgeleitet auf eine login-Seite (oder was auch immer Funktion, die in der Fehlermeldung callback).
Das problem ist, dass es keinen status-code, dass ich bewusst bin (ich würde zu gerne wissen, aber! Ich habe nichts hier falsch!) für 'Sitzung abgelaufen', um zu erfassen und zu verarbeiten.
Ich sage nicht, Sie "sollte nicht" oder "keine" verwenden Sie den Fehler-Rückruf. Aber die Funktion ist zu berücksichtigen, andere Fehler als die session abläuft. Sie möglicherweise benötigen, um in der Verarbeitung unterschiedlich basierend auf status-codes. Wenn Ihre Funktion verarbeitet alle diejenigen Fälle aus, toll! In einem Antrag, wir sind in der Tat die Umleitung auf die login-Seite und die Fehler-callback oft Reise aufgrund einer false-positive-und Abladen der Benutzer fälschlicherweise auf die login-Seite. Für den Fall der "Sitzung abgelaufen" wir fangen in der Erfolgs-callback über eine JSON-Nachricht.
[aktualisiert nach Dave ' s ausgezeichnete Kommentare: ] Wenn Sie Ihren server zurück eine sinnvolle server-Fehler (401, 403, 550 oder was auch immer Sinn macht in deinem Szenario), dann mit fnServerData mit statusCode-parameter in der .ajax () - Aufruf (das einen Schluck!) würde genauso gut funktionieren. Ich denke, es ist die gleiche Menge an Arbeit: return JSON über eine Methode, die Sie bereits geschrieben haben, oder die return-status-Fehler über Methoden sollten Sie bereits Zugriff haben. Wählen, welche für Sie Sinn macht.
Habe ich es getan mit der Antwort von bill martino hier:
http://datatables.net/forums/discussion/4377/catch-text-returned-from-server-side-ajax-call
Auf dem Ajax-Source-Antwort sollten Sie wieder einen Json-string so:
1.Mit diesem code in Ihre erste ajax-Fehler-Seite. oder aber auch footer-Datei.dieser code funktioniert für session-timeout nach redirect auf die login-Seite nicht immer ajax Fehler.
2.klicken Sie auf die Schaltfläche, um die Funktion zu Zeit immer Fehler..setzen Sie den line-in-Funktion
wie ein Beispiel