替换URL中GET请求的参数:
/**
* 替换URL中的参数值或给URL添加参数
* param: 要替换或将要添加的参数名称
* value: 参数值
* src : URL地址
*/
function replaceUrlParam(param, value, src) {
// 这里对url进行解码
if (src.indexOf("%") > -1 && src.indexOf("\\", src.indexOf("%") - 1) == -1) {
src = decodeURIComponent(src);
return replaceUrlParam(param, value, src);
}
var mark = src.indexOf("\\", src.indexOf("?") == 0?0 : (src.indexOf("?") - 1)); // 拿到?开始的位置的前一位,用于判断是不是\?已经转义的?
if (src.indexOf("?") > -1 && src.indexOf("\\", mark) != 0 ) {
// 参数是存在url中
if(src.indexOf(param) > -1) {
var beginIndex = src.indexOf(param);
var lastIndex = src.indexOf("&", beginIndex);
var split = src.split("?");
var url = split[0];
var params = split[1];
var paramSplit = params.split("&"); // 这里拿到key-value形式的参数形式
// 对参数进行替换
for (var i = 0; i < paramSplit.length; i++) {
console.log( paramSplit[i]);
console.log(paramSplit[i].split("="));
const paramKey = paramSplit[i].split("=")[0];
const paramValue = paramSplit[i].split("=")[1];
var newValue = "";
if (paramKey == param) {
newValue = value;
paramSplit[i] = paramKey+"="+newValue;
}
}
var newParams = "";
// 重新拼接参数
for(var i = 0; i < paramSplit.length; i++) {
newParams += newParams == ""?paramSplit[i]:"&"+paramSplit[i];
}
return url+"?"+newParams;
} else {// 参数不存在url中
return src += "&"+param+"="+value;
}
} else {
src += "?"+param+"="+value;
}
return src;
}
console.log(replaceUrlParam("e", "德文", encodeURIComponent(encodeURIComponent("http://127.0.01:8080?a=中文\\%&b=&c=英文"))) );
console.log(replaceUrlParam("a", "德文", encodeURIComponent(encodeURIComponent("http://127.0.01:8080?a=中文\\%&b=&c=英文"))) );