redirect nach XmlHttpRequest

the incredible Leitman

Erfahrenes Mitglied
Hallo liebe Tutorialianer ^^

Ich bin ziemlich neu im Bereich servlets/Ajax und javascript
und habe bereits eine Frage, die mir brennend auf der Zunge liegt o.O

Wie kann ich nach einem erfolgreichen XmlHttpRequest den browser auffordern auf eine neue Seite zu gehen?
Angenommen ich habe folgende javascript function, welche ich z.B. bei einem click auf ein html element aufrufen:
Javascript:
var mypostrequest=new ajaxRequest(); // erstellt einen neuen request, abhängig vom browser
mypostrequest.onreadystatechange=function()
{
    if (mypostrequest.readyState==4 && mypostrequest.status == 200)
    {
        // wie kann ich hier auf die neue Seite weiterleiten?
    }
}
var parameters = "param1=5&param2=x&..."; // create params
mypostrequest.open(POST, url, true);
mypostrequest.setRequestHeader(Content-type, application/x-www-form-urlencoded);
mypostrequest.send(parameters);


Die aufgerufene url führt zu einem servlet, dass mir eine html seite erstellt und den statuscode setzt.
Angenommen, das funktioniert alles,
wie kann ich nach Erhalten des response zu meinem abgesetzten request auf die neue Seite weiterleiten? o.O

Ich habe zwar Fälle gesehen, wo Teile des aktuellen documents mittels innerHTML einfach mit dem responseText/Xml gesetzt werden, aber macht man das wirklich so? o.O

Eigentlich dachte ich, ich kann am Ende meines servlets den Empfänger mit "sendRedirect(neueUrl)" anweisen, anschließend dort eine neue Anfrage hinzusenden...
doch verstehe ich scheinbar nicht, wie ich dort die neue url eingeben muss -.-


Vielleicht kann mich jemand aufklären,
ich google bereits seit Stunden, finde aber einfach keine eindeutige, passende Lösung...
Bin ich total auf dem Holzweg oder suche ich einfach falsch?

mit freundlichen Grüßen
the incredible Leitman


EDIT:
Ahja, ich habe gesehen, im xmlHttpRequest object gibt es attribute für "url" oder "redirect".
Diese sind aber bei mir immer "undefined" o.O

Wie bzw. wo kann ich diese denn setzen?
 
Zuletzt bearbeitet von einem Moderator:
Hallo incredible Leitman,

eigentlich besteht der Hauptsinn von Ajax doch im asynchronen (also NICHT beim Laden einer Seite) empfangen oder senden von Daten. (um die aktuelle Seite mit innerHTML o. Ä. zu verändern)
Wen du sowieso nur GET-Parameter mitgibst, worin soll dann der Vorteil deiner Methode gegenüber einem einfachen Link oder einem Button mit onclick="window.location.href = 'http://www.example.org/?param1=5&param2=x&...';" bestehen?

Gruß javaDeveloper2011
 
Servus javaDeveloper und Danke für deine Antwort :)

Die Sache ist die, dass ich bereits zur Laufzeit das Dom verändere und childs einfüge und neue elemente darstelle, darum könnte ich (soweit ich das verstehe) keinen fixen Link einfügen.

Ich erstelle mir auf click eines buttons dann mit einem servlet ein neues html (indem ich einen post xmlhttpRequest mit aktuellen Daten erstelle) , das dann eben von diesen Parametern einige Werte überprüft, session schreibt und ein neues Dokument zurücktgibt... und auf das möchte ich verlinken.

Theoretisch könnte ich das auch mit einer <form> machen, die auf submit mein servlet aufruft,
doch müsste ich dann jedesmal, wenn ich ein grafisches Element (das ich verwende) ins DOM erstelle,
ebenso ein "hidden field" machen müsste, welches dann mit der Form auf Post übergeben wird.


Der Grund, warum ich überhaupt ajax verwende ist, weil es tatsächlich gefordert war xD

liebe Grüße
the incredible Leitman
 

Neue Beiträge

Zurück