使用Ajax的发送Get请求,Url被截断
作者:互联网
-
请求参数,roleName中包含特殊字符"#"
-
发送请求的js代码
static request(param){
let opt = param || {};
opt.url = param.url || '';
opt.async = param.async || true;
opt.data = param.data || null;
opt.success = param.success || function () {};
let requestUrl = opt.url;
requestUrl = this.appendGetParams(requestUrl, opt.data);
requestUrl = encodeURI(requestUrl);
$.ajax({
url: requestUrl,
contentType: 'application/x-www-form-urlencoded;charset=utf-8',
type:"get",
// xhrFields:{
// withCredentials:true
// },
dataType: opt.dataType || 'json'
}).done(function (data) {
...
...
...
});
}
-
原因
encodeURI方法***不会***对下列字符编码 ASCII字母 数字 ~!@#$&*()=:/,;?+'
-
解决
将encodeURI替换为encodeURIComponent
encodeURIComponent方法***不会***对下列字符编码 ASCII字母 数字 ~!*()’,但是会处理"#"
对url进行encode的时候,根据需要选择不同的编码方式
标签:opt,Get,Url,requestUrl,param,url,Ajax,data,encodeURI 来源: https://blog.csdn.net/XJYPC/article/details/122038619