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

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

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

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

Ответы на вопрос(3)

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

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

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

$(myForm).serializeAndEncode();
 04 июн. 2014 г., 17:04
Пожалуйста, не используйтеescape, Это было [устарело в течение многих лет] (developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/… и должен быть замененencodeURIComponent как в примере Мэтта Роя.

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

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

$("#formToSerialize").serializeAndEncode();
 26 окт. 2016 г., 18:30
Это было именно то, что я делал самостоятельно.

Решение, которое дал Терри с escape (), не работает. = И & amp; кодируются (мы этого не хотим), и знак + все еще там.

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

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

Ваш ответ на вопрос