使用jQuery替换查询字符串参数并放在地址栏中而不刷新

Posted

技术标签:

【中文标题】使用jQuery替换查询字符串参数并放在地址栏中而不刷新【英文标题】:Replace the query string param using jQuery and put it in the address bar without refreshing 【发布时间】:2012-07-05 13:29:15 【问题描述】:

我必须使用 jQuery 或 javascript 将 st=6 替换为 st=7 并更新地址栏。我尝试使用jQuery地址插件,但我只能替换#之后的部分。

您能否建议我如何在 # 之前更新查询字符串。 查询字符串如下所述。

http://test.com/search/searchresults?st=6&term=chicken#/?term=chicken&pi=1&ps=10

我不想在更改网址时刷新页面,但需要更改地址栏中的网址。

【问题讨论】:

您的主要问题不是如何将 st=6 实际替换为 st=7,而是如何在地址栏中替换它?如果是这样,那么您应该更清楚。 【参考方案1】:

如果您的意思是要更新地址栏中的实际 url,那么这是 html5 的一项新功能,并未得到广泛支持。

例如:

window.history.pushState(“object or string”, “Title”, “/new-url”);

查看 caniuse.com 似乎这将在所有浏览器的下一个主要版本中推出:

http://www.caniuse.com/#search=pushState

您仍然可以更改网址,但使用window.location = "http://www.example.com/";会导致页面重新加载

您应该能够使用此页面中的其他正则表达式来构建您想要重定向到的 url。

【讨论】:

【参考方案2】:

试试这个

var str = 'http://test.com/search/searchresults?st=6&term=chicken#/?term=chicken&pi=1&ps=10';
str.replace(/(st\=)\d+&/, "$1" + '7'); // replace '7' with any number you like

这不是 jQuery,它是通过 Regular Expression 的 javascript(jQuery 的组成部分:),它应该在你的情况下完成这项工作。

【讨论】:

如何替换地址栏中的url window.location.replace(str.replace(/(st\=)\d+&/, "$1" + '7'));【参考方案3】:

您可以使用正则表达式,如下所示:

var addr = 'http://test.com/search/searchresults?st=6&term=chicken#/?term=chicken&pi=1&ps=10';
var newVal = 7;

addr.replace(/([?&])st=\d+/, '$1st=' + newVal);

【讨论】:

地址栏中如何替换【参考方案4】:

我认为你的要求是无法实现的,想想银行登录表单页面,你将当前的 url 替换为真实的银行 url,这会导致重大的安全问题。

【讨论】:

以上是关于使用jQuery替换查询字符串参数并放在地址栏中而不刷新的主要内容,如果未能解决你的问题,请参考以下文章

jQuery获取地址栏中的链接参数

jquery截取地址栏中url参数的值

获取URL地址栏中的参数并返回值

地址栏参数获取

jQuery Mobile:每次页面加载时如何读取查询字符串参数?

如何在url地址栏中直接写数组参数进行传递