jQuery序列化将所有空格转换为加号
Posted
技术标签:
【中文标题】jQuery序列化将所有空格转换为加号【英文标题】:jQuery serialize converts all spaces to plus 【发布时间】:2012-06-17 01:02:17 【问题描述】:目前,无论我在哪里使用序列化,我都必须像这样使用它:
.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】:不要相信有默认值,您需要将字符串编码为one of these ways。
虽然您可以创建自己的插件:
jQuery.fn.serializeAndEncode = function()
return escape(this.serialize());
$(myForm).serializeAndEncode();
【讨论】:
请不要使用escape
。它已 [弃用多年](developer.mozilla.org/en-US/docs/Web/javascript/Guide/… 并应替换为 encodeURIComponent
就像在 Matt Roy 的示例中一样。以上是关于jQuery序列化将所有空格转换为加号的主要内容,如果未能解决你的问题,请参考以下文章