关于jquery的serialize方法转换空格为+号的解决方法

jquery的 serialize()方法,可以对表单项进行序列化,这本来是很方便的一个功能;但是实际使用中去发现了如下问题:
例如:
< textarea name="content">abc 123 <  /  textarea >
那么在执行 serialize()方法后,得到的却是  abc+123  这样的字符串;
即jquery的序列化方法对空格进行了转义,转换成了 + 号。
jquery中serialize方法的部分代码如下所示:
//.................
//.................
return s.join("&").replace(/ /g, "+");  //替换空格为 + 号

测试了一下,serialize()方法对真正的“+”号转义的是 %2B,所以可以放心的对serialize()后的结果进行符号替换
例:

< textarea name="content">abc + 123 + 456  <  /  textarea >

jquery代码:
var a= $(‘$frm1‘).serialize(); //序列化,默认会调用encodeURIComponent()进行编码
alert(a); // content=abc+++123+++456
var b = a.replace(/\+/g," ");   // g表示对整个字符串中符合条件的都进行替换
b =  decodeURIComponent(b);  //对serialize后的内容进行解码
alert(b); // content=abc + 123 + 456
至此,问题解决了。

时间: 2024-10-09 06:20:59

关于jquery的serialize方法转换空格为+号的解决方法的相关文章

jQuery中ajax的使用与缓存问题的解决方法

jQuery中ajax的使用与缓存问题的解决方法 1:GET访问 浏览器 认为 是等幂的就是 一个相同的URL 只有一个结果[相同是指 整个URL字符串完全匹配]所以 第二次访问的时候 如果 URL字符串没变化 浏览器是 直接拿出了第一次访问的结果 POST则 认为是一个 变动性 访问 (浏览器 认为 POST的提交 必定是 有改变的) 防止 GET 的 等幂 访问 就在URL后面加上 ?+new Date();,[总之就是使每次访问的URL字符串不一样的] 设计WEB页面的时候 也应该遵守这个

jquery升级到新版本报错[jQuery] Cannot read property ‘msie’ of undefined错误的解决方法(转)

最近把一个项目的jQuery升级到最新版,发现有些页面报错Cannot read property 'msie' of undefined.上jQuery网站上搜了一下,原因是$.browser这个api从jQuery1.9开始就正式废除,js代码里只要用到$.browser就会报这个错.具体说明参见jQuery官方说明. 楼主顺便扩展阅读了一下,发现jQuery· 1.9之后的版本把所有在早期版本里标记为deprecated的api都正式删除了,不再向后兼容.对于升级到最新jQuery的童鞋而

[jQuery] Cannot read property ‘msie’ of undefined错误的解决方法 --转

初用Yii的srbac模块.出现 Cannot read property ‘msie’ of undefined 错误.上网查询,找到如下的文章.使用文末的打补丁的方法,成功搞定.感谢. =============================== http://blchen.com/jquery-can-not-read-property-msie-of-the-undefined-error-solution/ 最近把一个项目的jQuery升级到最新版,发现有些页面报错Cannot re

PHP截取中文字符串不出现?号的解决方法[原创]

PHP截取中文字符串不出现?号的解决方法[原创] 大 | 中 | 小 [不指定 2007-8-15 18:51 | by 张宴 ] [文章作者:张宴 本文版本:v1.0 最后修改:2007.08.15 转载请注明出处:http://blog.zyan.cc] 当PHP截取中英文混合字符串时,最后一个汉字经常被拆成两半,例:截取字符串的前18个字 view plainprint? <?php $text = "1欢迎访问sina新浪播客"; $value = substr($tex

JQuery的$和其它JS发生冲突的快速解决方法

众所周知,jQuery是目前最流行的JS封装包,简化了很多复杂的JS程序,JQuery讲浏览器DOM树定义为$,通过$来获取各个子节点. 然后,JS插件并非只有JQuery,还有prototype.js 等其它比较好的插件.它们也使用$.所以有时候同时使用这个两个JS插件的时候,就会出现$的使用权冲突问题.现在我们来看看如何解决这个冲突问题.请看下文: 我们都知道JQuery有一个函数,jquery.noConflict() 它的作用是讲$的控制权转让出去.然后我们可以通过jQuery代替$来获

[jQuery] Cannot read property ‘msie’ of undefined错误的解决方法

使用ztree时候没有用默认的1.4版本jquery,报错Cannot read property ‘msie’ of undefined $.browser这个api从jQuery1.9开始就正式废除,js代码用到$.browser就会报这个错.详细说明参见官方说明 解决方法加入下面代码,jQuery文件加载之后,使用$.browser的代码之前. jQuery.browser={};(function(){jQuery.browser.msie=false; jQuery.browser.v

[转][JavaScript]使用jquery插件报错:$.browser is undefined的解决方法

刚开始以为是插件有错误,就到官方网站去下载一个最新版的Jcrop插件,结果在原项目的网页打开就是正常的,而引入项目就会报错,我发现可能与jquery的插件版本有关,查看官方的demo目录下的juqery版本是V1.3.2,而我使用的jquery版本是V1.11.1,查看jquery官方的更新日志,果然是这个的问题.关于$.browserbrowser就是用来获取浏览器基本信息的. jQuery 从 1.9 版开始,移除了 $.browser 和 $.browser.version , 取而代之的

layui与jquery冲突导致下拉框无法显示的解决方法

1.背景: 在使用 layui 框架写 jsp 的时候,使用 ajax 传递数据来刷新表单,发现使用 ajax 引用外部的jquery 和 layui 自带的jquery中,可能是 $ 导致select 下拉框中的option 没法在layui中正常使用(即数据传过去了,但是点击下拉框没有任何数据) 2.解决 查了一下网上的解决方法.有个解决方法是 在layui.js之前引用其他jquery .但是发现 并没有什么卵用. 后来发现,ajax传递数据在加载页面之后,导致了导入的option没有在第

Python里面的write()方法写入文件时候的乱码解决方法

为了为今后的大数据以及人工智能的大潮流的到来做准备,最近在学Python,在这个过程中,会遇到许多汉字之间的转换,今天在写write方法的时候,发现写入的汉字会出现乱码,百思不得其解,上网查众资料,,得出,原来在open打开文件的时候写一个 encoding="utf-8"即可,上代码 fos = open("index.text", "w", encoding="utf-8") fos.write("我今年十八岁&