为Ajax页面添加书签

时间:2011-01-11 15:46:30

标签: php jquery ajax

假设我有一个网址:http://example.com/person/list

该网站将显示人员列表。人员名单变得很长,所以最终我建立了分页。我们说每页10个人。 URL看起来像这样:

http://example.com/person/list?page=2

如果我点击下一页链接,我将转到第3页:

http://example.com/person/list?page=3

这很好,因为如果我将网址复制并粘贴给朋友,她会立即转到第3页。

假设我现在合并了AJAX,页面请求是使用jQuery的ajax调用。原始网址为http://example.com/person/list,当用户点击下一页链接时,地址栏中的网址不会更改。

这很糟糕,因为如果我在第3页,地址栏中的网址不再反映这一点。

有多个jQuery历史插件会更改URL,但是,这些插件只会更改在#井号后面的URL部分。哈希标记之后的信息不会发送到服务器。

如果我使用的是历史插件,则可以将网址更改为http://example.com/person/list#page=2

我对这种方法的问题是:如果有人将此URL复制并粘贴给朋友,当朋友请求此URL时,我不知道用户打算查看哪个页面。因此,我最好的方法是将所有人员条目加载到页面上,并让javascript根据哈希标记后面的信息选择要显示的页面。这是一个问题,因为我开始对页面进行分页,以减少首先从服务器撤回的信息量!

我有哪些选项,这样我可以让后退按钮与Ajax一起使用,但也有可添加书签的链接,不需要我从服务器获取所有信息。

2 个答案:

答案 0 :(得分:4)

正如我最近从我的question那里学到的,你必须在'朋友'打开链接并使用ajax获取内容后检查网址的哈希部分。

或者您可以在服务器端将其重写为http://example.com/person/list?page=2

答案 1 :(得分:1)

在页面加载之前,您无法列出任何内容,然后让ajax加载相应的页面。

另一种选择是正常加载第一页,然后让javascript检查页面哈希以加载适当的页面。

对于非常小的负载(我假设加载10个人​​是'快'),第二个选项可能是最好的,因为它不应该导致UI的太多中断。

就搜索引擎优化而言,选项一有一个缺点,因为如果没有加载,搜索引擎就不会对内容编制索引。