如何向URL添加参数并重新加载页面

时间:2014-03-10 21:44:12

标签: javascript jquery url parameters

我正在寻找向URL添加参数然后通过javascript / jquery重新加载页面的最简单方法。我试图避免任何插件。基本上我想要:

http://www.mysite.com/about

成为:

http://www.mysite.com/about?qa=newParam

或者,如果参数已经存在,则添加第二个参数:

http://www.mysite.com/about?qa=oldParam&qa=newParam

3 个答案:

答案 0 :(得分:1)

location.href会为您提供当前网址。然后,您可以通过执行以下操作来编辑查询字符串并刷新页面:

if (location.href.indexOf("?") === -1) {
    window.location = location.href += "?qa=newParam";
}
else {
    window.location = location.href += "&qa=newParam";
}

答案 1 :(得分:1)

有关window.location的信息,请查看Window.location (MDN)

快速而肮脏的解决方案是:

location += (location.search ? "&" : "?") + "qa=newParam"

它应该适用于你的例子,但是错过了一些边缘情况。

答案 2 :(得分:1)

这是一个香草解决方案,它应该适用于所有情况(当然错误的输入除外)。

function replace_search(name, value) {
    var str = location.search;
    if (new RegExp("[&?]"+name+"([=&].+)?$").test(str)) {
        str = str.replace(new RegExp("(?:[&?])"+name+"[^&]*", "g"), "")
    }
    str += "&";
    str += name + "=" + value;
    str = "?" + str.slice(1);
    // there is an official order for the query and the hash if you didn't know.
    location.assign(location.origin + location.pathname + str + location.hash)
};

编辑:如果你想添加东西并且永远不删除任何东西,那么功能就会变小。我没有找到具有不同值的多个字段,但没有相关规范。

function replace_search(name, value) {
    var str = "";
    if (location.search.length == 0) {
        str = "?"
    } else {
        str = "&"
    }
    str += name + "=" + value;
    location.assign(location.origin + location.pathname + location.search + str + location.hash)
};