js中传递特殊字符(+,&)的方法_javascript技巧
程序员文章站
2023-12-22 16:54:34
...
背景:
今天在做一个任务时,用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中传递特殊字符(+,&)的方法_javascript技巧
-
用于deeplink的js方法(判断手机是否安装app)_javascript技巧
-
使用Firebug对js进行断点调试的图文方法_javascript技巧
-
asp.net中System.Timers.Timer的使用方法_javascript技巧
-
js实现延时加载Flash的方法_javascript技巧
-
JS不能跨域借助jquery获取IP地址的方法_javascript技巧
-
js获取IP地址的方法小结_javascript技巧
-
Chrome中模态对话框showModalDialog返回值问题的解决方法_javascript技巧
-
js获取隐藏元素宽高的实现方法_javascript技巧
-
JavaScript中判断某个字符串是否包含另一个字符串的方法