2017-03-25 50 views
0

我想更改URL中的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如何使用Jquery替換url中的查詢字符串值

當我按下一個按鈕,我想改變值234和1993年

我有工程不友好的URL的功能。

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

有沒有人誰知道我怎麼能更改,恕不追加當前的URL查詢字符串,只改變值的網址?

+0

jQuery是JavaScript的 – Webbanditten

+1

不回答你的問題,但你是100%肯定你知道你在這裏做什麼?你知道使用服務器端URL重寫可以更好地完成這個*嗎? –

回答

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

相關問題