jQuery serialize wandelt alle Leerzeichen in Pluszeichen um

Lesezeit: 1 Minute

Benutzer-Avatar
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();

1131100cookie-checkjQuery serialize wandelt alle Leerzeichen in Pluszeichen um

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy