繁体   English   中英

如何使用Jquery替换URL中的查询字符串值

[英]How to replace query string value in the url using Jquery

我想从网址更改网址查询字符串值。 例如:我有这个URL: www.example.com/site-post/234-1993/因此,假设234是person_id和1993 person_year。 在没有重写规则的情况下,URL如下所示: www.example.com/site-post/?person_id=234&person_year=1993

当我按下按钮时,我想更改值234和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;
    }
}

如果我调用此函数,它将把我的网址www.example.com/site-post/234-1993/ to www.example.com/site-post/234-1993/?person_id=234&person_year=1993更改www.example.com/site-post/234-1993/ to www.example.com/site-post/234-1993/?person_id=234&person_year=1993

是否有人知道如何在不将当前网址附加到查询字符串的情况下仅更改值的情况下更改网址?

将此代码放在您的函数中并检查。

 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); } 

我不太确定为什么要这样做,但是这段代码应该可以工作:

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/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM