js中传递特殊字符(+,&)的方法
2014-01-16 00:00
344 查看
背景:
今天在做一个任务时,用Jquery的Ajax传递一长串字符时,在后台的验证一直不成功,纠结时我了(那个字符串是随机生成的,特长)。查了一上午,原来是我生成的字符串中有+号,而在js传递的时候,会理解为是连接字符用的,到了后台就将+号自动变为空格了,所以后台的字符串和前台生成的已经不一样了。
原因:
js后自动解析特殊字符,如+号为连接符,解析为空格,&为变量连接符,服务器端接受数据时&以后的数据不显示等等。
解决办法:
1、将字符放到form中,然后用js提交form表单到服务器。
2、将字符中的特殊字符替换成十六进制的字符,一些特殊字符与十六进制的对应关系:
+
空格
/
?
%
&
=
#
%2B
%20
%2F
%3F
%25
%26
&3D
%23
str = str.replace(/\+/g,"%2B"); 将+号替换为十六进制
3、最简单的一种,使用encodeURIComponent()函数。
该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。
其他字符(比如 :;/?:@&=+$,# 这些用于分隔 URI 组件的标点符号),都是由一个或多个十六进制的转义序列替换的。
今天在做一个任务时,用Jquery的Ajax传递一长串字符时,在后台的验证一直不成功,纠结时我了(那个字符串是随机生成的,特长)。查了一上午,原来是我生成的字符串中有+号,而在js传递的时候,会理解为是连接字符用的,到了后台就将+号自动变为空格了,所以后台的字符串和前台生成的已经不一样了。
原因:
js后自动解析特殊字符,如+号为连接符,解析为空格,&为变量连接符,服务器端接受数据时&以后的数据不显示等等。
解决办法:
1、将字符放到form中,然后用js提交form表单到服务器。
2、将字符中的特殊字符替换成十六进制的字符,一些特殊字符与十六进制的对应关系:
+
空格
/
?
%
&
=
#
%2B
%20
%2F
%3F
%25
%26
&3D
%23
str = str.replace(/\+/g,"%2B"); 将+号替换为十六进制
3、最简单的一种,使用encodeURIComponent()函数。
该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。
其他字符(比如 :;/?:@&=+$,# 这些用于分隔 URI 组件的标点符号),都是由一个或多个十六进制的转义序列替换的。
相关文章推荐
- js中传递特殊字符(+,&)的方法
- js中传递特殊字符(+,&)的方法
- js中传递特殊字符(+,&)的方法
- js中传递特殊字符&的方法
- url 传递参数(特殊字符)解决方法
- js中对arry数组的各种操作小结 瀑布流AJAX无刷新加载数据列表--当页面滚动到Id时再继续加载数据 web前端url传递值 js加密解密 HTML中让表单input等文本框为只读不可编辑的方法 js监听用户的键盘敲击事件,兼容各大主流浏览器 HTML特殊字符
- js传递特殊字符转义方法
- url 传递参数(特殊字符)解决方法
- Oracle中插入特殊字符:&和'的解决方法汇总
- js的form表单提交url传参数(包含+等特殊字符)的两种解决方法
- 前台js escape及后台C# Server.UrlEncode 对QueryString传参的含~!@#$%^&*等特殊字符的处理
- Node.js Mongodb 密码特殊字符 @的解决方法
- JS 字符串编码函数(解决URL特殊字符传递问题):escape()、encodeURI()、encodeURIComponent()区别详解
- url 传递参数(特殊字符)解决方法
- php中url传递中文字符,特殊危险字符的解决方法
- url 特殊字符 传递参数解决方法
- JS 字符串编码函数(解决URL特殊字符传递问题):escape()、encodeURI()、encodeURIComponent()区别详解
- url 特殊字符 传递参数解决方法
- xslt生成xml出现特殊字符Â处理方法
- 【已解决】GET方法的参数中处理URL特殊字符&%等