1

URL クエリ文字列の 1 つのパラメーターを追加するか、既に存在する場合は変更する必要があります。

たとえばparam、値に設定したい場合newvalue

http://example.org/file.phpにつながるはずですhttp://example.org/file.php?param=newvalue

http://example.org/file.php?abc=defにつながるはずですhttp://example.org/file.php?abc=def&param=newvalue

http://example.org/file.php?param=oldValueにつながるはずですhttp://example.org/file.php?param=newvalue

URI.jsライブラリについては知っていますが、最小サイズの 21kb (非 gzip) は私には大きすぎます。

URLクエリ文字列を変更するための小さなライブラリ、またはこれを行う小さなコードを探しています。

4

2 に答える 2

1

これはすべての JS での解決策ですが、これをコンボ js/php スクリプトにすることは理にかなっています

var myParam = "foo"
var oldValue = "bar"
var newValue = "fighters"

var queryPairs = window.location.search.substr(1).split("&");
var queryParams = [];
queryPairs.forEach(function(element, index, array){
    var pair = element.split("=");
    queryParams[pair[0]] = pair[1];
})

if (queryParams[myParam] == oldValue){
    queryParams[myParam] = newValue;
    queryPairs = [];
    for (var index in queryParams){
        queryPairs.push(index + "=" + queryParams[index]);
    }
    var baseUrl = window.location.href.split("?")[0];
    var newSearch = queryPairs.join("&")
    var newUrl = baseUrl + "?" + newSearch
    window.location = newUrl;
}
于 2012-12-16T19:57:23.347 に答える
-1

私の(かなり長い)バージョン:

if (location.search.match(/([?&]param)=([^&#]*)/g)) {
    location.search = location.search.replace(/([?&]param)=([^&#]*)/g, '$1=' + newvalue);
} else if (location.search.match(/([&][^&#]*)=/g)) {
    location.search = location.search + "&param=" + newvalue;
} else {
    location.search = location.search + "?param=" + newvalue;
}
于 2012-12-16T19:17:17.423 に答える