1. 程式人生 > >筆記-返回到前一個頁面時顯示前一個頁面中ajax獲取的數據

筆記-返回到前一個頁面時顯示前一個頁面中ajax獲取的數據

最終 logs ajax請求 嘗試 但是 repl 拼接 新聞 筆記

筆記第一部分:http://www.cnblogs.com/zczhangcui/p/6869219.html

在第一部分遇到的問題是,用ajax獲取了一系列列表信息後,拼接好html後插入到了原有頁面中,類似於一系列新聞列表,點擊查看詳情後再返回到這一頁,會出現所有ajax獲取並插入頁面的結構都沒有了,經過調研,決定嘗試從history對象入手。

我使用了history.replaceState方法來改變當前頁面的state,每次ajax獲取信息後,將頁面中希望保留的內容放入state中,當返回到這個頁面中時,讀取state中的信息,如果state不為null,那麽將state中的頁面結構展示出來。

步驟很簡單,大概分兩步:

1、ajax獲取信息並拼裝到html結構後,將希望保留的html結構放入state中

history.replaceState({current_html: $(‘.page‘).html()}, ‘‘, ‘‘);

一些必須的又不是很重要的信息,可以保存在html中的一個地方,需要用到的時候再讀取。比如我就把當前的頁數信息保存在html中,這樣當返回到這一頁中時,我可以讀取這個頁數信息,通過ajax向服務器請求下一頁。

2、返回這個頁面的時候,查看state是否保存有信息,如果有就展示出來

var prev_html = history.state && history.state.current_html;
if (prev_html) { $(‘.page‘).html(prev_html); }

這樣就基本實現了返回後依然顯示之前ajax請求而得到的信息。

但是嘗試使用後,發現另一個問題,我滾到到頁面中間的某個地方,點擊某一條進入詳情頁面,然後我點擊返回回到這一頁,雖然依然是之前的那些結構,但是沒有滾動到我之前瀏覽的地方。

最終我的解決辦法是進入詳情頁之前,在sessionStorage中臨時保存一個瀏覽位置的信息,具體實現有一點小bug,之後再看看有沒有更好的辦法。

筆記-返回到前一個頁面時顯示前一個頁面中ajax獲取的數據