Вопрос по serialization, jquery, space – Сериализация jQuery преобразует все пробелы в плюс

25

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

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

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

Ваш Ответ

3   ответа
3

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

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

$("#formToSerialize").serializeAndEncode();
Это было именно то, что я делал самостоятельно.
1

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

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

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

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

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

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

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

Похожие вопросы