jquery的serialize多了个加号怎么办

lys2018年02月23日 0条评论

jquery的serialize多了个加号怎么办?

jquery的 serialize()方法,可以对表单项进行序列化,这本来是很方便的一个功能;但是实际使用中去发现了如下问题:
例如:

例如:
< textarea name="content">abc 123 <  /  textarea >
那么在执行 serialize()方法后,得到的却是  abc+123  这样的字符串;
即jquery的序列化方法对空格进行了转义,转换成了 + 号。
jquery中serialize方法的部分代码如下所示:
//.................
//.................
return s.join("&").replace(/ /g, "+");  //替换空格为 + 号

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

<!DOCTYPE html>
<html>
<head>
    <script src="https://www.developzhe.com/admin_static/plugins/jQuery/jquery-2.2.3.min.js">
    </script>
</head>
<body>
<form id="f1">
    <input name="id" value="12" type="text"/>
    <input name="name" value="lys 测试 saa + dasdsadsa" type="text"/>
</form>
<button onclick="alert(decodeURIComponent($('#f1').serialize().replace(/\+/g,' ')))">显示</button>
</body>
</html>

使用

replace(/\+/g,' ')

这样就可以解决该问题