问题场景:今天在测试自己手上的页面功能时,发现一个小bug,在用ajax向后台发数据时,只要参数中出现一些特殊字符,控制台会报错http 400的问题,其实就是特殊字符服务器不能解析。好了,问题是找到了,但是改如何解决勒!
方案一:var str= para.replace(/%/g,"%25");//g代表全局匹配替换
方案二: urlTemp=encodeURI(urlTemp);//使用改方法自动转码
或 encodeURIComponent(str); 。
区别参考:
简单明了区分escape、encodeURI和encodeURIComponent
下面是一些常见字符列表
url特殊符号 在url中实际含义 转码后的十六进制表示
符号 | 含义 | 编码 |
+ | +号表示空格 | %2B |
空格 | 用+号或者编码 | %20 |
/ | 分隔目录和子目录 | %2F |
? | 分隔实际的 URL 和参数 | %3F |
% | 指定特殊字符 | %25 |
# | 表示书签 | %23 |
& | 参数间的分隔符 | %26 |
= | URL 中指定参数的值 | %3D |
解决方案其实都是类似的,这个看自己的习惯。