2009-08-21 14 views
1

Wenn wir 'a d' (ein Leerzeichen d) eingeben, gibt .val mit einem Pluszeichen a + d zurück. Ich brauche die eigentliche Zeichenfolge von 'a d'? Wie mache ich das?jQuery texbox .val() gibt + Zeichen für Leerzeichen zurück

HTML Textbox

<input type="text" name="term" value="" id="term" title="term" size="30px"/> 

JQuery

function() { $('#results').load('search.aspx', $('#term').val()); } 

Antwort

0

Möglicherweise müssen Sie es auf dem Server dekodieren. In ASP.NET wird Server.UrlDecode() für Sie tun. In PHP gibt es auch eine urldecode Funktion:

http://us2.php.net/manual/en/function.urldecode.php

+0

Danke an alle Antworten. server.urldecode erledigt den Job. Das einzige Problem ist, wenn jemand + in die Suche eingibt. –

+1

Hier kommt die JS encodeURIComponent() zum Einsatz ;-) – JorenB

+0

Wenn Sie die URL-Codierung und -Dekodierung auf dem Server und dem Client korrekt vornehmen, sollte es keine Rolle spielen, was der Benutzer eingibt. Ein gründliches Testen von nicht-alphanumerischen Feldern in HTML-Eingaben ist ein wesentlicher Bestandteil des Testens jeder Webanwendung. –

0

.load ist nur eine Abstraktion der Ajax-Methoden, so dass der Wert URL codiert wird, wie es search.aspx gesendet wird. Merken Sie die Kodierung in Firebug (oder gleichwertig) oder wenn Sie den Wert auf search.aspx Seite speichern?

1

Ich bin ziemlich sicher, das .val() die Zeichenfolge perfekt zurückgibt, sondern dass die AJAX-Modul hat einige URL-Codierung auf Ihre Daten. Ich bin auch irgendwo auf dieses Problem gestoßen ... Moment, ich werde versuchen, die Lösung zu finden, die ich damals benutzt habe.

Edit:

Dies ist das Stück Code, das ein Formular für mich Serialisierung würde:

var data = ''; 
for(var i = 0; frm.elements[i] != undefined; i++) { 
    data += frm.elements[i].name + '=' + encodeURIComponent(frm.elements[i].value); 
    if(frm.elements[i + 1] != undefined) data += '&'; 
} 

, in dem frm Ihre Form ist, offensichtlich. Sie benötigen wahrscheinlich nur die encodeURIComponent()-Funktion, wenn Sie nur die einsame Zeichenfolge senden.