1

私はこのURLを持っています

http://9001/transactions

URLを変更する必要があるボタンがあります。

http://9001/transactions?type=all
http://9001/transactions?type=confirmed
http://9001/transactions?type=unconfirmed

トランザクション後に文字列を置き換えるにはどうすればよいですか。クリック機能を配置しましたが、その中に何を入れるかを知る必要があります。

URLが変更されるため、これはトランザクションの前に何にも依存できません(それが理にかなっている場合)。質問があいまいでしたら申し訳ありませんが、これを成し遂げるために大急ぎで。

4

4 に答える 4

1

これを正確に実行する関数を作成しました。現在のページをリロードし、既存の url 変数の変更 (および新しい変数の追加) を完全にサポートします。オブジェクトリテラルを関数に渡すだけです。ここを参照してください: https://stackoverflow.com/a/10235376/733347

あなたの場合、あなたがする必要があるのは、そのように関数を呼び出すことだけです

reloadWithQueryStringVars({"type": "all"});

また

reloadWithQueryStringVars({"type": "confirmed"});

また

reloadWithQueryStringVars({"type": "unconfirmed"});

ボタンのクリックイベント

参照用の関数全体は次のとおりです。

function reloadWithQueryStringVars (queryStringVars) {
    var existingQueryVars = location.search ? location.search.substring(1).split("&") : [],
        currentUrl = location.search ? location.href.replace(location.search,"") : location.href,
        newQueryVars = {},
        newUrl = currentUrl + "?";
    if(existingQueryVars.length > 0) {
        for (var i = 0; i < existingQueryVars.length; i++) {
            var pair = existingQueryVars[i].split("=");
            newQueryVars[pair[0]] = pair[1];
        }
    }
    if(queryStringVars) {
        for (var queryStringVar in queryStringVars) {
            newQueryVars[queryStringVar] = queryStringVars[queryStringVar];
        }
    }
    if(newQueryVars) { 
        for (var newQueryVar in newQueryVars) {
            newUrl += newQueryVar + "=" + newQueryVars[newQueryVar] + "&";
        }
        newUrl = newUrl.substring(0, newUrl.length-1);
        window.location.href = newUrl;
    } else {
        window.location.href = location.href;
    }
}
于 2012-09-26T13:18:40.403 に答える
1

GET パラメータを変更する関数を作成できます...

var updateGetParam = function(key, value) {

    window.location.search = window.location.search.replace(new RegExp("([?&;])" + key + "=.*?(&|;|$)"), "$1" + key + "=" + encodeURIComponent(value) + "$2");

}

jsFiddle .

最初に正規表現エスケープ関数を使用してユーザー入力を実行する必要があります。

于 2012-09-26T13:09:07.253 に答える
0

非常に大まかな解決策ですが、理解して実装するのは簡単です。役立つかどうかを確認してください

var url = "http://9001/transactions?type=unconfirmed"; //in live environment, replace with var url = window.location.href;
var urlArray = url.split('?');
var urlArrayLength = url.split('?').length;


urlArray[urlArrayLength - 1] = "type=newValue";


url  = urlArray.join('?');

alert(url)
于 2012-09-26T13:20:10.950 に答える