jQuery serialize将所有空格转换为加号

目前,无论我在哪里使用序列化,我必须像这样使用它:

.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();