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

Javascript 如何向URL添加参数并重新加载页面,javascript,jquery,url,parameters,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 location.href将为您提供当前URL。然后,您可以通过

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

http://www.mysite.com/about
成为:

http://www.mysite.com/about?qa=newParam
或者,如果参数已存在,则添加第二个参数:

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

location.href
将为您提供当前URL。然后,您可以通过如下操作编辑查询字符串并刷新页面:

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

location.href
将为您提供当前URL。然后,您可以通过如下操作编辑查询字符串并刷新页面:

if (location.href.indexOf("?") === -1) {
    window.location = location.href += "?qa=newParam";
}
else {
    window.location = location.href += "&qa=newParam";
}
查看有关
窗口位置的信息

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

location += (location.search ? "&" : "?") + "qa=newParam"
它应该适用于您的示例,但遗漏了一些边缘情况。

查看
窗口。位置的信息

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

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

它应该适用于您的示例,但遗漏了一些边缘情况。

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

编辑:如果你想添加东西而不删除任何东西,这个函数要小得多。我不太喜欢有多个不同值的字段,但没有关于这方面的规范

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)
};

这是一个普通的解决方案,它应该可以很好地适用于所有情况(当然除了错误的输入)

编辑:如果你想添加东西而不删除任何东西,这个函数要小得多。我不太喜欢有多个不同值的字段,但没有关于这方面的规范

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)
};

我试图使用它,但出于某种原因,它会创建一个无限循环,不断地添加参数。我不知道为什么,因为我假设条件会处理这个问题。@cc test是不是在
标记中有这些行?在这种情况下,它们将在页面加载时执行,从而导致重定向。如果是这样,请尝试将其放入@username的解决方案之类的函数中,并在需要重新加载页面时调用它。我尝试使用此函数,但由于某些原因,它会创建一个无限循环,不断添加参数。我不知道为什么,因为我假设条件会处理这个问题。@cc test是不是在
标记中有这些行?在这种情况下,它们将在页面加载时执行,从而导致重定向。如果是这样的话,那么试着把它放在一个像@username的解决方案这样的函数中,当你想重新加载页面时调用它。这非常有效。我添加了一个if/else语句来检测参数是否已经存在。非常感谢。这很有效。我添加了一个if/else语句来检测参数是否已经存在。非常感谢你。