2011-01-11 136 views
2

比方說,我有一個網址: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部分。哈希標記之後的信息不會發送到服務器。

如果我使用的是歷史的插件,該URL可以改爲http://example.com/person/list#page=2

我的問題,這種做法是:如果有人複製和粘貼此URL給朋友,當朋友請求這個URL,我不知道用戶打算查看哪個頁面。因此,我最好的方法是將所有人員條目加載到頁面上,並根據散列標記之後的信息讓javascript選擇要顯示的頁面。這是一個問題,因爲我開始對頁面進行分頁以減少首先從服務器上拉回的信息量!

我有什麼選擇,這樣我就可以使用Ajax的後退按鈕,但也有可收藏的鏈接,不需要我從服務器獲取所有信息。

回答

4

正如我最近從我的question瞭解到的,你必須在'friend'打開鏈接並使用ajax獲取內容之後檢查URL的哈希部分。

或者你可以重寫它的服務器端http://example.com/person/list?page=2

+0

的確,只要看看Gmail或谷歌閱讀器(工作應用程序,而不是巨大的下載代碼),以瞭解如何處理。 – Omiod 2011-01-11 15:59:26

1

你不能列出任何東西,直到頁面加載,然後讓AJAX加載相應的頁面。

另一種選擇是正常加載第一頁,然後讓javascript檢查頁面散列以加載適當的頁面。

對於非常小的負載(我假設加載10人是'快'),第二個選項可能是最好的,因爲它不應該導致太多的UI中斷。

就SEO而言,選項一有缺點,因爲搜索引擎如果沒有加載,就不會索引內容。

+0

更不用說選項1不是無腳本兼容的 – Dave 2011-01-11 17:19:38