AJAX GET / POST o_O
McKinsey
- javascript
Guten Tag zusammen,
habe mir mit AJAX jetzt ein Skript gebastelt, welches sowohl GET als auch POST Übergaben beherrscht.
Da für die POST Übergabe wie bei GET das Zielformular in Einzeilteile zerlegt und aneinander gereiht wird, laufen beide Verfahren ja grundsätzlich ähnlich ab.
Der Unterschied bei herkömmlicher Seitentechnik ist ja, dass die GET-Übergabe in der Adressleiste abläuft und in der Zeichenlänge beschränkt ist und POST eben nicht.
Nun, ... bei AJAX gibt es ja keine Adressleiste in der das übergeben wird. Daher habe ich die Zeichenlängen Beschränkung getestet. Dazu habe ich beide Verfahren mit mehreren 1000 Zeichen Variablen Übergabe verwendet. Die Zeichenlänge wurde jedoch bei beiden Verfahren nicht beschnitten, daher habe ich bei über 6.000 Zeichen aufgehört.
Wo ist also der technische und vor allem praktische Unterschied?
MfG,
McKinsey
Hallo,
Wo ist also der technische und vor allem praktische Unterschied?
Der Browser behandelt es als POST/GET-Übergabe, sprich Dinge wie Passwörter in der Adresse werden nicht sichtbar zwischengespeichert.
Das bedeutet desweiteren, dass die GET-Dateien in den Cache kommen. Die POST-Dateien werden somit von den meisten (allen?) Browsern nicht zwischengespeichert.
Praktisch hat das den Vorteil, dass wenn man eine Abfrage ständig wiederholen will, weil sich z.B. ein Datenbank eintragt ändert oder weil zu einer bestimmten Server-Zeit ein Eregnis eintritt besser die POST-Methode nimmt, weil die Seite da nicht gecachet wird.
Thomas
Hallo,
eine kleine Anmerkung noch zu:
Praktisch hat das den Vorteil, dass wenn man eine Abfrage ständig wiederholen will, weil sich z.B. ein Datenbank eintragt ändert oder weil zu einer bestimmten Server-Zeit ein Eregnis eintritt besser die POST-Methode nimmt, weil die Seite da nicht gecachet wird.
Man kann auch durch folgende Befehle bei einer Get Methode "ungecachte" Ergebnisse bekommen. Dies ist zB sinnvoll, wenn man die vom server generierte XML mal zu testzwecken direkt aus der URL heraus erzeugen will (also get braucht) in der Anwendung aber das GET gecache stört.
http.open('get', url);
http.onreadystatechange = handleFunction;
http.setRequestHeader("Pragma", "no-cache");
http.setRequestHeader("Cache-Control", "must-revalidate");
http.setRequestHeader("If-Modified-Since", document.lastModified);
http.send(null);
hat mir schon geholfen.
Gruß,
Bastian
Hi,
http.open('get', url);
http.onreadystatechange = handleFunction;
http.setRequestHeader("Pragma", "no-cache");
http.setRequestHeader("Cache-Control", "must-revalidate");
http.setRequestHeader("If-Modified-Since", document.lastModified);
http.send(null);hat mir schon geholfen.
Das wundert micht ... denn das sind alles *Reponse*-Header, die normalerweise der Server mit seiner Antwort an den Client schickt, und nicht umgekehrt letzterer mit seiner Anfrage an ersteren.
Hast du das in mehreren Browsern ausprobiert - oder kocht hier mal wieder einer (ein ganz spezieller vielleicht) sein eigenes Sueppchen in Punkto XMLHTTPRequest?
Oder ist das gar ein generelles XMLHTTPRequest-"Feature", welches mir bisher unbekannt ist - dass man damit den Browser dazu bringen kann, sich selber was vorzuluegen, was die Antwort des Servers angeht?
MfG ChrisB
Moin,
Hast du das in mehreren Browsern ausprobiert - oder kocht hier mal wieder einer (ein ganz spezieller vielleicht) sein eigenes Sueppchen in Punkto XMLHTTPRequest?
getestet auf FF 2, IE 6+7, Safari für Windoze, sowie Opera 9 und funktioniert bei diesen Browsern einwandfrei.
Gruß,
Bastian
Hi,
Der Unterschied bei herkömmlicher Seitentechnik ist ja, dass die GET-Übergabe [...] in der Zeichenlänge beschränkt ist und POST eben nicht.
Per theoretischer Definition nicht in relevantem Masze; in der praktischen Umsetzung in den Browsern aber schon.
Nun, ... bei AJAX gibt es ja keine Adressleiste in der das übergeben wird. Daher habe ich die Zeichenlängen Beschränkung getestet. Dazu habe ich beide Verfahren mit mehreren 1000 Zeichen Variablen Übergabe verwendet. Die Zeichenlänge wurde jedoch bei beiden Verfahren nicht beschnitten, daher habe ich bei über 6.000 Zeichen aufgehört.
Und in welchen Browsern hast du getestet?
Wo ist also der technische und vor allem praktische Unterschied?
Ich wuerde POST fuer Daten nutzen, die nach POST "verlangen", und GET analog.
Siehe bspw. auch </archiv/2008/2/t167200/#m1090750>
MfG ChrisB