在ajax请求上更改URL

我想在页面URL中添加一些GET参数。 我正在加载这样的内容:

 $("#content").load("shop.pl #content .product", $.param({categ:1)})); 

如何更改URL以具有相同的参数?categ=1

您可以使用HTML5 pushState API来实现此目的。 但是,只有最新的浏览器支持它,IE在IE9中甚至不支持它。 没有办法预先做到这一点。 但是,有一个约定,您将使用location.hash来指示由ajax请求修改状态的页面。 有关如何使用url哈希指示页面状态的更多信息,您可能需要查看此内容 。

有一个库History.js ,可用于转换到pushState。 它的API与pushState API非常接近,但如果浏览器不支持pushState,它将透明地提供哈希fragement回退。

您的内容是通过AJAX加载的,因此URL可能会修改其哈希片段 – 请参阅http://code.google.com/web/ajaxcrawling/docs/specification.html

您可以尝试使用pushState()方法操作可见URL(请参阅文档 ,您可能还希望阅读有关onpopstate事件的信息 )。

这样您就可以按照自己的方式更改URL。

关于如何在没有页面重新加载的情况下更改URL的一些演示如下: http : //html5demos.com/history