在拼接参数的时候,使用 encodeURIComponent()
进行手动转义。var url= "xxxx?name=" + encodeURIComponent("aaa&bbb")
特殊特殊字符的含义:
字符 | 特殊字符的含义 | URL编码 |
---|---|---|
+ | URL 中+号表示空格 | %2B |
空格 | URL中的空格可以用+号或者编码 | %20 |
/ | 分隔目录和子目录 | %2F |
? | 分隔实际的 URL 和参数 | %3F |
% | 指定特殊字符 | %25 |
# | 表示书签 | %23 |
& | URL 中指定的参数间的分隔符 | %26 |
= | URL 中指定参数的值 | %3D |
示例代码:
//处理特殊字符get请求识别错误的情况
//filename为带有特殊字符的url字符串
var curFilename = null;
//含有特殊字符的话,处理完再赋值(没有处理空字符串)
if(filename.indexOf('#') != -1 || filename.indexOf('+') != -1 || filename.indexOf('/') != -1 || filename.indexOf('?') != -1 || filename.indexOf('%') != -1 || filename.indexOf('&') != -1 || filename.indexOf('=') != -1){
curFilename = filename.replace(/([\#|\+|\/|\?|\%|\#|\&|\=])/g, function ($1) {
return encodeURIComponent($1)
})
}else{
//如果不含有特殊字符直接赋值
curFilename = filename;
}
//发送请求(我这里是我项目中封装的,大家正常发送请求就可以)
Cm.get(Cm.webroot + curFilename, function (msg) {
},function (msg) {
})