更改页面网址而不刷新页面

问题描述:

这甚至有可能吗?更改页面网址而不刷新页面

这里的问题:

我有这个网址的关键字搜索(搜索之后):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无需刷新。

+0

它会火得上的网址吗? – Pierreten 2009-12-14 00:39:51

+0

不,它不会,因为哈希在当前页面上。如果散列存在,它会跳转到它。 – ceejayoz 2009-12-14 00:57:52

+0

这会使页面成为“书签”,但您无法访问该页面并将“价格= 100”发送到呈现页面的PHP/ASP脚本,您必须使用javascript获取它,然后再次执行AJAX提取... – Sandman 2010-01-08 08:14:42

我可以为此建议的最好的事情就是在网址中使用散列。这将允许用户将url加入书签,并在返回时保持状态。另一个好处是你可以在不刷新页面的情况下更改散列。

所以您的网址看起来是这样的... http://localhost/thi/search?keyword=key#price=100

了jQuery插件地址将工作得很好这一点。

http://www.asual.com/jquery/address/

使用HTML5是可能的。使用window.history.pushState()。

例子:

if(currentHref!=window.location){ 
    window.history.pushState({path:currentHref},'',currentHref);  
} 

细节和解释:http://tinywall.info/2012/02/22/change-browser-url-without-page-reload-refresh-with-ajax-request-using-javascript-html5-history-api-php-jquery-like-facebook-github-navigation-menu/