我正在寻找向URL添加参数然后通过javascript / jquery重新加载页面的最简单方法。我试图避免任何插件。基本上我想要:
http://www.mysite.com/about
成为:
http://www.mysite.com/about?qa=newParam
或者,如果参数已经存在,则添加第二个参数:
http://www.mysite.com/about?qa=oldParam&qa=newParam
答案 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)
};