簡體   English   中英

jquery修改url獲取參數

[英]jquery modify url get parameters

我有一個像這樣的URL:

http://google.de/test.php?a=b&c=d&e=f

我知道只需修改一個GET參數:( c是“h”而不是“d”)

http://google.de/test.php?a=b&c=h&e=f

並重定向到新網址。 所有其他GET參數應該保持不變。

我怎么會這樣做?

我同意最好在其他答案中提到為此目的使用庫。

但是,如果您需要更簡單的快速修復,這里是基於正則表達式的字符串替換解決方案。

var url = "http://my.com/page?x=y&z=1&w=34";

var regEx = /([?&]z)=([^#&]*)/g;
var newurl = url.replace(regEx, '$1=newValue');

這里我用'newVlaue'替換查詢字符串鍵'z'

看看這個小提琴: http//jsfiddle.net/BuddhiP/PkNsx

如上所述window.location.search會給你帶有查詢字符串? 包括在內。

然后我將這些變成一個對象(可能有一個像http://github.com/medialize/URI.js這樣的庫),以便更容易使用params。 var params = { key: value, key1: value1}

然后,您可以修改所需的值,並將鍵值對轉換回查詢字符串。

在此之后,您可以使用window.location將用戶移動到下一頁。

PHP的一個鮮為人知的特性是現有參數的后一個命名會覆蓋之前的參數。

掌握了這些知識,您可以執行以下操作:

location.href = location.href + '&c=h';

簡單。

我已經整理了一個非常簡單的方法,但它只適用於你想要實現的目標:

var url = 'http://google.de/test.php?a=b&c=d&e=f';
var gets =  url.split('.php?');
var ge = gets[1].split('&');
var change = ge[1].split('=');
var change[1] = 'h';
var newUrl = url[0] + '.php?' + ge[0] + '&' + change[0] + '=' + change[1] + '&' + ge[2];

你可以嘗試這樣的事情:

var changed = "h"; // you can vary this GET parameter

var url = "http://google.de/test.php?a=b&e=f&c=" + changed; // append it to the end

window.location = newurl; // redirect the user to the url

因為您的參數可以在任何地方。 所以這將工作正常

url="http://google.de/test.php?a=b&c=d&e=f";
url=url.replace(/&c=.*&/,"&c=h&")

設置或更新URL / QueryString參數,並使用HTML history.replaceState()更新URL

你可以嘗試這樣的事情:

var updateQueryStringParam = function (key, value) {
    var baseUrl = [location.protocol, '//', location.host, location.pathname].join(''),
        urlQueryString = document.location.search,
        newParam = key + '=' + value,
        params = '?' + newParam;

    // If the "search" string exists, then build params from it
    if (urlQueryString) {
        keyRegex = new RegExp('([\?&])' + key + '[^&]*');

        // If param exists already, update it
        if (urlQueryString.match(keyRegex) !== null) {
            params = urlQueryString.replace(keyRegex, "$1" + newParam);
        } else { // Otherwise, add it to end of query string
            params = urlQueryString + '&' + newParam;
        }
    }
    window.history.replaceState({}, "", baseUrl + params);
};

 location.href = location.origin+location.pathname+location.search; 

用你的新參數替換location.search,例如“?foo = bar&tic = tac”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM