Сериализация jQuery преобразует все пробелы в плюс

В настоящее время везде, где я использую сериализацию, я должен использовать его следующим образом:

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

в противном случае любые пробелы в данных формы будут скрыты до+. Есть ли параметр, который может сделать это по умолчанию.

Ответ 1

Для развлечения здесь альтернатива, которая не использует временную переменную:

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

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

Ответ 2

Я должен был сделать то же самое. Решение, предложенное Терри, с escape() не работает. = И & получают кодировку (мы этого не хотим), а + все еще там.

Я создал собственную функцию для сериализации:

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

Ответ 3

Не верьте, что есть по умолчанию, вам нужно будет закодировать строку одним из этих способов.

Хотя вы можете создать свой собственный плагин:

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

$(myForm).serializeAndEncode();