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