Сериализация 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();