Derzeit muss ich überall, wo ich serialize verwende, es so verwenden:
.serialize().replace(/\+/g,'%20');
Andernfalls werden alle Leerzeichen in den Formulardaten in + umgewandelt. Gibt es eine Einstellung, die dies zum Standard machen kann.
Markus Steggles
Derzeit muss ich überall, wo ich serialize verwende, es so verwenden:
.serialize().replace(/\+/g,'%20');
Andernfalls werden alle Leerzeichen in den Formulardaten in + umgewandelt. Gibt es eine Einstellung, die dies zum Standard machen kann.
Zum Spaß hier eine Alternative, die keine temporäre Variable verwendet:
$.fn.serializeAndEncode = function() {
return $.map(this.serializeArray(), function(val) {
return [val.name, encodeURIComponent(val.value)].join('=');
}).join('&');
};
$("#formToSerialize").serializeAndEncode();
Genau das habe ich alleine gemacht.
– Neil Monroe
26. Oktober 2016 um 16:30 Uhr
Ich musste dasselbe tun. Die Lösung, die Terry mit escape() gegeben hat, funktioniert nicht. Das = und & werden verschlüsselt (das wollen wir nicht) und das + ist immer noch da.
Was ich getan habe, ist meine eigene Funktion zum Serialisieren zu erstellen:
var QueryString = "";
$(selector).each(function(index) {
if(QueryString != "") QueryString += "&";
QueryString += $(this).get(0).id + "=" + encodeURIComponent( $(this).val() );
});
Glauben Sie nicht, dass es einen Standardwert gibt, Sie müssen die Zeichenfolge codieren einer dieser Wege.
Obwohl Sie Ihr eigenes Plugin erstellen könnten:
jQuery.fn.serializeAndEncode = function() {
return escape(this.serialize());
}
$(myForm).serializeAndEncode();
Bitte nicht verwenden escape
. Es ist gewesen [deprecated for many years](developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/… und sollte durch ersetzt werden encodeURIComponent
wie in Matt Roys Beispiel.
– Husky
4. Juni 2014 um 15:04 Uhr