我想从网址更改网址查询字符串值。
例如:
我有这个网址:zip()
所以,让我们说234是person_id和1993 person_year。没有重写规则,url看起来像这样:
www.example.com/site-post/234-1993/
当我按下按钮时,我想改变值234和1993。
我有一个适用于不友好网址的功能。
www.example.com/site-post/?person_id=234&person_year=1993
如果我调用此功能,则会更改我的网址function update_permalink(uri, key, value) {
var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i");
var separator = uri.indexOf('?') !== -1 ? "&" : "?";
if (uri.match(re)) {
return uri.replace(re, '$1' + key + "=" + value + '$2');
}
else {
return uri + separator + key + "=" + value;
}
}
是否有人知道如何在不使用查询字符串附加当前网址的情况下更改网址,只更改值?
答案 0 :(得分:1)
将此代码放入您的函数中并检查。
if (window.location.href.indexOf("234") > 0){
var newUrl = window.location.href.replace("234-1993/", "?person_id=234&person_year=1993");
window.history.replaceState({}, '', newUrl);
}

答案 1 :(得分:0)
我不确定你为什么要这样做,但这段代码应该有效:
function update_permalink(uri, param1, param2) {
var re = uri.match(/([^\?]*)\/site-post\/(\d*)-(\d*)\//);
if (uri.match(/([^\?]*)\/site-post\/(\d*)-(\d*)\//)){
uri = uri.replace(re[2],param1);
uri = uri.replace(re[3],param2);
return uri;
}
}
然后使用它:
update_permalink("www.example.com/site-post/234-1993/",112,113);
结果:
www.example.com/site-post/112-113/