Sven Rautenberg: Javascript "escape" wird durch "encodeURI" ersetzt?

Beitrag lesen

Moin!

Ich erlaube dem User das Eingeben eines Ortes und gestalte dann eine Abfrage mit JS dieses Ortes in einer DB, um die Koordinaten zu bekommen. Probleme waren zunächst Orte mit Umlauten (zB Köln) oder Leerzeichen (jede Dadstadt). Mache ich mit den Formulardaten nicht, übergebe sie also so, wie sie mit JS aus dem Textfeld ausgelesen werden, passiert nichts. Nutze ich encodeURI() erziele ich das selbe Ergebnis. Erst mit dem Einsatz von escape() gehts - Städte mit Umlauten werden gefunden.

encodeURI() codiert gewisse Zeichen nicht, die man aber codieren muß, wenn diese Zeichen als Nutzdaten z.B. im Parameterteil der URL vorkommen sollen.

Deshalb gibt es encodeURIComponent(), welches genau diese Zeichen (u.a. das Leerzeichen) noch zusätzlich codieren.

Sprich: encodeURI() ist eigentlich nur dann nützlich, wenn man einen URI-Teil _vor_ dem Fragezeichen bearbeiten will. Geht's hingegen um irgendwas _hinter_ dem Fragezeichen, was man aus eigenen Einzelteilen zusammensetzen möchte, ist encodeURIComponent() richtig.

- Sven Rautenberg

--
"Love your nation - respect the others."