2012-06-14 8 views
24

Derzeit überall verwende ich serialize Ich habe es zu benutzen, wie folgt aus:jQuery serialize konvertiert alle Räume und

.serialize() ersetzen (/ +/g, '% 20');.

ansonsten werden alle Leerzeichen in den Formulardaten in + 's umgewandelt. Gibt es eine Einstellung, die dies zum Standard machen kann?

Antwort

0

Glauben Sie nicht, dass es einen Standard gibt, müssen Sie die Zeichenfolge in one of these ways codieren.

Obwohl Sie Ihr eigenes Plugin erstellen könnte:

jQuery.fn.serializeAndEncode = function() { 
    return escape(this.serialize()); 
} 

$(myForm).serializeAndEncode(); 
+2

Bitte verwenden Sie nicht 'Flucht '. Es wurde [viele Jahre] veraltet (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Functions#escape_and_unescape_functions (Obsoleted_above_JavaScript_1.5)) und sollte wie folgt mit 'encodeURIComponent' ersetzt werden Matt Roys Beispiel – Husky

1

Ich hatte das gleiche zu tun. Die Lösung, die Terry gab, mit Flucht(), funktioniert nicht. Die = und & werden verschlüsselt (das wollen wir nicht) und die + sind noch da.

Was ich getan habe ist meine eigene Funktion zu schaffen serialisiert:

var QueryString = ""; 
$(selector).each(function(index) { 
    if(QueryString != "") QueryString += "&"; 
    QueryString += $(this).get(0).id + "=" + encodeURIComponent($(this).val()); 
}); 
3

Für Spaß, hier ist eine Alternative, die keine temporäre Variable nicht verwendet:

$.fn.serializeAndEncode = function() { 
    return $.map(this.serializeArray(), function(val) { 
     return [val.name, encodeURIComponent(val.value)].join('='); 
    }).join('&'); 
}; 

$("#formToSerialize").serializeAndEncode(); 
+0

Das war genau das, was ich alleine gemacht habe. –