2010-10-14 16 views
6

In meiner Anwendung lade ich einige Tabelle mit AJAX. Aber wenn die Benutzersitzung abläuft, gibt es mir eine Login-Seite als Antwort, die in den Tabellenbereich geladen wird.Sitzungs-Timeout-Antwort in AJAX

Ich möchte umleiten, um Login-Seite in Javascript sein, wenn Session-Timeout während AJAX-Aufruf auftritt.

+0

Ich bin zu spät, um eine Frage wie diese zu denken und Ihre zu finden. Bei jedem Laden der Seite (serverseitig) prüfe ich auf Vorhandensein des Benutzers. wenn sie nicht eingeloggt sind, werde ich nur eine Zeichenfolge sterben, die ajaxtimeout enthalten wird. Die meisten meiner eigenen Bibliotheken suchen nach responsetext.indexof ('ajaxtimeout') und in diesem Fall werde ich window.location = Login-Seite. –

Antwort

5

Beim Rendern der Anmeldeseite können Sie einen benutzerdefinierten HTTP-Header an die Antwort anhängen: X-LOGIN-PAGE: True. Führen Sie dann Ihren AJAX-Aufruf aus und überprüfen Sie, ob dieser benutzerdefinierte Header im Erfolgsrückruf vorhanden ist. Wenn vorhanden, entsprechend handeln.

+0

In diesem Fall muss ich dies in jedem AJAX-Aufruf auf allen Seiten überprüfen. –

+1

Wenn Sie jquery verwenden, können Sie globale AJAX-Optionen einrichten: [jquery.ajaxSetup] (http://api.jquery.com/jQuery.ajaxSetup/) und führen Sie die Umleitung im 'Complete'-Callback durch, ohne Ihre bestehenden AJAX-Aufrufe zu ändern . Wenn Sie jQuery nicht verwenden, können, je nachdem, wie Sie Ihre AJAX-Aufrufe ausführen, möglicherweise Lösungen vorhanden sein. –

0

Sie können in der Methode, die vom AJAX-Aufruf aufgerufen wird, nach der Authentifizierung suchen und, falls nicht gefunden, einfach ein Flag zurückgeben. Im AJAX-Handler auf der Client-Seite können Sie die Anmeldeseite erkennen und auf diese umleiten.