XHTMLforum

XHTMLforum (http://xhtmlforum.de/index.php)
-   Javascript & Ajax (http://xhtmlforum.de/forumdisplay.php?f=83)
-   -   &-Zeichen im Text schneidet String ab (http://xhtmlforum.de/showthread.php?t=60986)

2beers 29.04.2010 15:10

&-Zeichen im Text schneidet String ab
 
Wie kann ich vermeiden, dass bei der Verarbeitung von Formular-Eingaben, die ein "&" enthalten, der String an diesem Zeichen abgeschnitten wird? Ich habe bisher nur Möglichkeiten gefunden, das &-Zeichen zu ersetzen. Da die Eingaben an eine Suchmaschine übermittelt werden, möchte ich die User-Eingaben aber nach Möglichkeit komplett und unverändert übermitteln.

Hier kann man mein Problem testen: 2beers.eu Einfach in das Suchformular oben irgendeine Phrase mit Kaufmannsund/Ampersand (&) eingeben und siehe da, alle nachfolgenden Eingaben verschwinden auf Nimmerwiedersehen.

Hier noch der verwendete JavaScript-Code:

var suchbegriff = document.suche.eingabefeld.value ;
if (document.suche.suchmaschine[0].checked) self.location.href="http://www.google.de/search?q="+encodeURI(suchbegriff)+"&hl=de&btnG=Goo gle-Suche" ;
if (document.suche.suchmaschine[1].checked) self.location.href="http://de.wikipedia.org/wiki/"+encodeURI(suchbegriff) ;
if (document.suche.suchmaschine[2].checked) self.location.href="http://search.ebay.de/search/search.dll?query="+suchbegriff ;

Scheppertreiber 29.04.2010 15:47

Das geht nicht. das "&" ist das Trennzeichen für die CGI-Parameter. somit wird
die CGI-Variable beendet weil die nächste beginnt.

Du könntest das irgendwie mappen, vielleicht geht es als "\&" oder "&" durch.

moontan 29.04.2010 15:50

Schau mal was encodeURI() macht (bzw. nicht macht) - dann siehst Du woran das liegt ;)

decodeURIComponent() sollte helfen.

Uli

2beers 29.04.2010 17:24

decodeURIComponent()
 
Danke für Eure schnellen Antworten!

@moontan: Dein Tipp ist zweifellos eine heiße Spur ;) Aber ich kann mir noch keinen rechten Reim darauf machen, wie ich damit mein Problem elegant lösen könnte. Auf das "encodeURI()" bin ich leider angewiesen, weil sonst - unabhängig vom Zeichensatz - Sonderzeichen mit vielen Browsern nicht korrekt übermittelt werden. Ich befinde mich gerade in einem Konzentrationsloch. Wärst Du so nett und würdest mir auf die Sprünge helfen?

moontan 29.04.2010 17:42

Hi 2beers,

na klar.
encodeURI() hat die fiese Eigenschaft das & eben nicht zu encoden.....
Darum decodeURIComponent() - da wird auch das & mit encoded

Uli

Edit sagt : encodeURIComponent() natürlich

2beers 29.04.2010 18:10

encodeURIComponent()
 
Aja, ich brauche also einfach nur "encodeURI()" gegen "encodeURIComponent()" zu tauschen. Ich bin begeistert! Man entdeckt doch immer wieder erhebliche Lücken beim eigenen Basiswissen.

Ich stand vorhin wegen des "decodeURIComponent()" etwas auf dem Schlauch und dachte, ich müsse das irgendwie mit dem "encodeURI()" verschachteln.

Vielen Dank!

moontan 30.04.2010 09:36

Ja - mit dem Tippfehler habe ich wohl ziemliche Verwirrung gestiftet. Sorry dafür ....


Alle Zeitangaben in WEZ +2. Es ist jetzt 01:51 Uhr.

Powered by vBulletin® Version 3.8.11 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.

© Dirk H. 2003 - 2023