Ich benutze $.post()
, um ein Servlet mit Ajax aufzurufen und dann das resultierende HTML-Fragment zu verwenden, um ein "div"-Element in der aktuellen Seite des Benutzers zu ersetzen. Wenn die Sitzung jedoch ein Zeitlimit überschreitet, sendet der Server eine Umleitungsanweisung, um den Benutzer auf die Anmeldeseite zu schicken. In diesem Fall ersetzt jQuery das "div"-Element durch den Inhalt der Anmeldeseite und zwingt die Augen des Benutzers, eine seltene Szene zu sehen.
Wie kann ich eine Redirect-Direktive aus einem Ajax-Aufruf mit jQuery 1.2.6 verwalten?
Verwenden Sie den Low-Level-Aufruf "$.ajax()":
$.ajax({
url: "/yourservlet",
data: { },
complete: function(xmlHttp) {
// xmlHttp is a XMLHttpRquest object
alert(xmlHttp.status);
}
});
Versuchen Sie dies für eine Umleitung:
if (xmlHttp.code != 200) {
top.location.href = '/some/other/page';
}
in das Servlet sollten Sie Folgendes einfügen response.setStatus(response.SC_MOVED_PERMANENTLY);` einfügen, um den xmlHttp-Status '301' zu senden, den Sie für eine Weiterleitung benötigen...
und in der $.ajax-Funktion sollten Sie nicht die Funktion .toString()
verwenden..., sondern nur
wenn (xmlHttp.status == 301) { top.location.href = 'xxxx.jsp'; }`
das Problem ist, dass es nicht sehr flexibel ist, man kann nicht entscheiden, wohin man umleiten will...
Umleitung durch die Servlets sollte der beste Weg sein. aber ich kann immer noch nicht den richtigen Weg, es zu tun finden.
Zusätzlich wollen Sie wahrscheinlich den Benutzer auf die in den Headern angegebene URL umleiten. Letztendlich wird es also so aussehen:
$.ajax({
//.... other definition
complete:function(xmlHttp){
if(xmlHttp.status.toString()[0]=='3'){
top.location.href = xmlHttp.getResponseHeader('Location');
}
});
UPD: Opps. Habe die gleiche Aufgabe, aber es funktioniert nicht. Ich mache dieses Zeug. Ich werde Ihnen die Lösung zeigen, wenn ich sie finde.