我使用history.pushState
附加一些参数到当前页面的URL后,使我的网页上的AJAX调用。现在,在同一页面上的用户操作的基础上,我想更新页面的URL再次与相同或额外的一组参数。我的代码看起来像这样:
var pageUrl = window.location.href + "?" + queryString;
window.history.pushState('','',pageUrl);
queryString是我的查询参数列表。
- 例如,我的默认页面URL:http://sample.com/
- 在同一页面上的第一次AJAX调用后,URL应该是:http://sample.com?param1=foo¶m2=bar
- 在同一页面上的第二次AJAX调用后,URL可以是:http://sample.com/?param1=foo,foo1¶m2=bar¶m3=another_foo
但是使用上面的代码,我的参数被附加到URL中,在第二次AJAX调用后,它们看起来像下面这样:
http://sample.com?param1=foo¶m2=bar¶m1=foo,foo1¶m2=bar¶m3=another_foo
所以参数在URL中出现了两次,有没有办法在推送到历史记录之前替换URL中的参数,或者有没有其他更好的方法在JavaScript(jquery)中实现这一点?
5条答案
按热度按时间w6mmgewl1#
我认为你需要的是删除
window.location.href
,留下'?' +
。cwdobuhd2#
此功能可能会有所帮助
编辑:下面的解决方案更简单,如果参数还不是URL的一部分,也可以使用。然而,它不支持Internet Explorer(你不说?).
mqxuamgl3#
为了保留url的最后一部分,只是玩参数,你可以创建一个新的URL对象,如下所示:
kpbpu0084#
管理当前URL中的查询参数
这个函数类似于其他答案,但是没有使用RegExp和字符串连接。
参数:
localhost:8080/some_page?foo=100500&foo=ABC
。否则,参数将被更改(如果没有,则添加)。3npbholx5#