hotti: Problem mit dynamischem Code auf AJAX-Seiten

Beitrag lesen

moin,

»» Kann es sein, dass Teile der Response nicht übertragen werden und nur ein Teil der Response im Browser ankommt? Prüf das mal.
»»
»» Hotte

Sieht ganz danach aus...aber wie kann ich denn das überprüfen? Ich bin in Sachen AJAX ein ziemlicher Neuling, kannst du mir da weiterhelfen?

Bei Ajax spielen einige Dinge zusammen, bei denen ist nicht immer leicht ist, dahinter zu kommen. Die größte Crux ist die Zeichenkodierung und das fängt damit an, was der Besucher im Browser einstellt.

Stichwort URI und: escape and unescape URI strings as defined by RFC 2396 (and updated by RFC 2732)....

Seitens Javascript (Request) gibt es die Funktionen
escape(1)
encodeURI(2)
encodeURIComponent(3)

Der Unterschied zwischen escape(1) und encodeURI(2) besteht darin, dass bei (1) die Kodierung in ASCII-Zahlenwerte, bei (2) hingegen in UTF-8 erfolgt: escape('ü') macht aus den 'ü' ein '%FC', encodeURI('ü') ein '%C3%BC'. Die Funktion encodeURIComponent() kodiert zusätzlich zu (2) noch eine Reihe weiterer Zeichen, u.a. das Zeichen "&" (Kaufmanns-UND, Ampersand), siehe SELFHTML-Doku.

Mit diesen Funktionen musst Du Dich auseinandersetzen, sofern es darum geht, per Ajax Requests zu erzeugen mit Parametern die userseitig erfolgen, also Benutzereingaben oder allgemein: Parameter in denen Sonderzeichen zu erwarten sind.

Um zu prüfen, was dann am Server ankommt, ist es u.U. hilfreich, den ganzen Kram mal in eine Datei zu schreiben, so mache ich das im Zweifelsfall und zum Testen einer neuen Ajax-Anwendung. Hierbei sehe ich, wie sich das "Escapen" [Funktionen (1), (2), (3)] und das browserseitige Character-Encoding auswirkt.

Hilfreich kann es auch sein, eine Response, die serverseitig erzeugt wird, in eine Datei zu schreiben, bevor die per Ajax zurück zum Browser geschickt wird.

Lange Rede kurzer Sinn: Bei Nichbeachten o.g. RFC's kann es schonmal vorkommen, dass von einem URI-String Teile abgeschnitten werden.

Viel Erfolg,
Hotte

Basics zu URI in AJAX

--
Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.