更改页面网址而不刷新页面
问题描述:
这甚至有可能吗?更改页面网址而不刷新页面
这里的问题:
我有这个网址的关键字搜索(搜索之后):http://localhost/thi/search?keyword=key
然后,我有一个使用了给ajaxForm插件(jQuery的)滑块搜索...
当我执行滑块搜索时,显然我仍然会在关键字搜索URL(因为请求通过ajax发送)
有没有办法将当前的URL更改为像http://localhost/thi/search?price=100(sli通过GET提交作为一个GET变量的价格)
我希望这样做,因为我想从滑块的搜索结果被添加书签...或者是否有任何其他方式做到这一点?
答
您可以使用哈希的URL(搜索#价格= 100)window.location.hash
方法。这些将获得书签,用户可以通过后退和前进按钮浏览这些内容。
用法示例:
<a href="#">100</a>
$('a').click(function() {
window.location.hash = 'price='+$(this).html();
return false;
});
会将该网址设为search#price=100
无需刷新。
答
我可以为此建议的最好的事情就是在网址中使用散列。这将允许用户将url加入书签,并在返回时保持状态。另一个好处是你可以在不刷新页面的情况下更改散列。
所以您的网址看起来是这样的... http://localhost/thi/search?keyword=key#price=100
了jQuery插件地址将工作得很好这一点。
答
使用HTML5是可能的。使用window.history.pushState()。
例子:
if(currentHref!=window.location){
window.history.pushState({path:currentHref},'',currentHref);
}
它会火得上的网址吗? – Pierreten 2009-12-14 00:39:51
不,它不会,因为哈希在当前页面上。如果散列存在,它会跳转到它。 – ceejayoz 2009-12-14 00:57:52
这会使页面成为“书签”,但您无法访问该页面并将“价格= 100”发送到呈现页面的PHP/ASP脚本,您必须使用javascript获取它,然后再次执行AJAX提取... – Sandman 2010-01-08 08:14:42