目前,无论我在哪里使用序列化,我都必须像这样使用它:
.serialize().replace(/\+/g,'%20');
否则表单数据中的任何空格都将被转换为+。是否有可以将其设为默认值的设置。
答案 0 :(得分:3)
为了好玩,这里有一个不使用临时变量的替代方案:
$.fn.serializeAndEncode = function() {
return $.map(this.serializeArray(), function(val) {
return [val.name, encodeURIComponent(val.value)].join('=');
}).join('&');
};
$("#formToSerialize").serializeAndEncode();
答案 1 :(得分:1)
我必须做同样的事情。 Terry用escape()给出的解决方案不起作用。 =和&正在编码(我们不希望这样),+仍在那里。
我所做的是创建自己的序列化函数:
var QueryString = "";
$(selector).each(function(index) {
if(QueryString != "") QueryString += "&";
QueryString += $(this).get(0).id + "=" + encodeURIComponent( $(this).val() );
});
答案 2 :(得分:0)
不要相信存在默认值,您需要在one of these ways中对字符串进行编码。
虽然你可以创建自己的插件:
jQuery.fn.serializeAndEncode = function() {
return escape(this.serialize());
}
$(myForm).serializeAndEncode();