我知道这个问题之前已经问过很多次了,但是答案没有足够的描述性来解决我的问题。我不想改变页面的整个URL。我想在按钮点击时附加一个参数&item=brand
,而不刷新。
使用document.location.search += '&item=brand';
会刷新页面。
使用window.location.hash = "&item=brand";
append而不刷新,但是使用了散列#
,这消除了参数的使用/影响。我尝试在append后删除散列,但是没有成功。
This answer和许多其他人建议使用HTML5历史API,特别是history.pushState
方法,对于旧的浏览器是设置一个片段标识符,以防止页面重新加载。
假设URL为:http://example.com/search.php?lang=en
如何使用HTML5 pushState方法或片段标识符追加&item=brand
,使输出如下所示:http://example.com/search.php?lang=en&item=brand
而不刷新页面?
我希望有人能解释一下如何使用HTML5 pushState来给一个现有的/当前的URL附加一个参数,或者如何设置一个片段标识符来达到同样的目的。一个好的教程,演示或一段代码加上一点解释会很棒。
到目前为止我所做的一切。你的回答将不胜感激。
6条答案
按热度按时间gxwragnw1#
可以使用pushState或replaceState方法,即:
或
带参数的示例:
laawzig22#
如果要同时添加和删除参数,也可以使用URL API:
jmp7cifd3#
如果有人想给一个更复杂的url(我的意思是https://stackoverflow.com/questions/edit?newParameter=1)添加一个参数,下面的代码很适合我:
希望这有帮助!
rqdpfwrv4#
修改了Medhi答案,这就成功了
k2fxgqgv5#
relj7zay6#
如果您想在当前url中附加多个参数而不重新加载页面,请尝试以下操作:
$.param
会将你的对象转换为item=brand&lang=en
,然后在开始处添加?
。结果将是:
httpts://app.com/index?item=brand&lang=en