6

私はこのようなURLを取得しました:

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

私は次のようにGETパラメータの1つだけを変更する必要があることを知っています:( c「d」ではなく「h」です)

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

新しいURLにリダイレクトします。他のすべてのGETパラメータは同じままである必要があります。

これをどのように行うのですか?

4

8 に答える 8

11

他の回答で述べたように、この目的のためにライブラリを使用するのが最善であることに同意します。

ただし、より簡単な迅速な修正が必要な場合は、正規表現に基づく文字列置換ソリューションを次に示します。

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

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

ここでは、クエリ文字列キー 'z' を 'newVlaue' に置き換えています。

このフィドルを見てください:http://jsfiddle.net/BuddhiP/PkNsx

于 2012-11-25T14:35:24.133 に答える
1

PHP のあまり知られていない機能は、既存のパラメーターの後者の名前付けが前の名前付けをオーバーライドすることです。

この知識があれば、次のことができます。

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

簡単。

于 2012-11-25T14:31:35.000 に答える
1

前述window.location.searchのように、クエリ文字列が?含まれています。

次に、これらをオブジェクトに変換して (おそらくhttp://github.com/medialize/URI.jsのようなライブラリを使用して)、パラメーターの操作を容易にします。お気に入りvar params = { key: value, key1: value1}

その後、必要な値を変更し、キーと値のペアをクエリ文字列に戻すことができます。

window.locationこの後、ユーザーを次のページに移動するために使用できます。

于 2012-11-25T14:11:40.480 に答える
0

パラメータはどこにでもある可能性があるためです。だからこれはうまくいく

url="http://google.de/test.php?a=b&c=d&e=f";
url=url.replace(/&c=.*&/,"&c=h&")
于 2012-11-25T14:40:40.847 に答える
0

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);
};
于 2016-12-20T17:12:10.640 に答える
0

次のようなことを試すことができます:

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
于 2012-11-25T14:28:31.740 に答える
0

私は本当に簡単な方法をまとめましたが、それはあなたが達成しようとしているものでしか機能しません:

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];
于 2012-11-25T14:17:20.147 に答える
-1

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

location.search を "?foo=bar&tic=tac" のような新しい引数に置き換えます

于 2015-03-11T15:28:02.783 に答える