Hoe kan ik een redirect verzoek te beheren na een jQuery Ajax-aanroep

Ik gebruik $.post() om een servlet aan te roepen met behulp van Ajax en gebruik dan het resulterende HTML fragment om een div element te vervangen in de huidige pagina van de gebruiker's. Echter, als de sessie time out gaat, stuurt de server een redirect directive om de gebruiker naar de login pagina te sturen. In dit geval vervangt jQuery het div element door de inhoud van de login pagina, waardoor de ogen van de gebruiker's getuige zijn van een inderdaad zeldzaam tafereel.

Hoe kan ik een redirect directive van een Ajax-oproep met jQuery 1.2.6?

Gebruik de low-level $.ajax() oproep:

$.ajax({
  url: "/yourservlet",
  data: { },
  complete: function(xmlHttp) {
    // xmlHttp is a XMLHttpRquest object
    alert(xmlHttp.status);
  }
});

Probeer dit voor een redirect:

if (xmlHttp.code != 200) {
  top.location.href = '/some/other/page';
}
Commentaren (9)

in de servlet moet je zetten response.setStatus(response.SC_MOVED_PERMANENTLY); om de '301' xmlHttp status te sturen die je nodig hebt voor een redirection...

en in de $.ajax functie moet je niet de .toString() functie gebruiken..., maar

indien (xmlHttp.status == 301) { top.location.href = 'xxxx.jsp'; }

het probleem is dat het niet erg flexibel is, je kunt niet beslissen waar je wilt redirecten...

redirecting via de servlets zou de beste manier moeten zijn. maar ik kan nog steeds niet de juiste manier vinden om het te doen.

Commentaren (0)

Daarnaast wil je de gebruiker waarschijnlijk doorsturen naar de gegeven URL in de headers. Dus uiteindelijk zal het er zo uitzien:

$.ajax({
    //.... other definition
    complete:function(xmlHttp){
        if(xmlHttp.status.toString()[0]=='3'){
        top.location.href = xmlHttp.getResponseHeader('Location');
    }
});

UPD: Opps. Heb dezelfde taak, maar het werkt niet. Deze dingen aan het doen. Ik'll tonen u oplossing wanneer ik'll het vinden.

Commentaren (1)