2014-05-09 59 views
1

我需要實現分頁的那些搜索結果頁面中的一個,點擊一個按鈕,在頁面底部添加新的結果(它們從Web服務返回爲HTML代碼)。無論這種分頁方式在webdev行話中被調用,我注意到它有一個「問題」:當我向另一個頁面發出HTTP請求時,添加了修改DOM的新內容,然後返回到前一個(使用瀏覽器的返回按鈕)添加的內容不再可見,我看到原始頁面是由瀏覽器接收(並緩存)的。管理由jQuery.append()修改的HTML頁面的最佳實踐是什麼?

作爲一種解決方案,我想要再次詢問在離開頁面之前獲取的所有結果,但我頭腦中有一個相當惱人的問題:我想知道該解決方案是否屬於「糟糕設計」 。

如果您的專家能夠給我一個意見和建議,再次請求結果,我會非常感激,因爲我無法弄清楚我可以依靠什麼事件來觸發WS調用。

回答

1

我假設您指的是一個「無限滾動」或加載架構,其中用戶只能看到一個子集,然後在某些事件(單擊或滾動)上加載更多的超集。

此內容通過ajax加載,而不是通過頁面的第一個獲取請求。瀏覽時,get方法的返回值被緩存,這就是你看到的顯示。有一些方法可以解決這個問題,並提出一個新的請求。但是,結果是相同的,即返回get請求,而不是當前頁面狀態。

爲了促進這一點,你需要保持一個頁面狀態,這可能是一種令人畏懼的行爲。讓我們看看今天網絡上最廣泛使用的版本:Facebook的照片瀏覽。即使您動態加載數百張圖片,如果您刷新或導航離開然後返回,您所獲得的只是第一組圖片。

基本上可以理解,如果你加載了一堆內容,並且作爲一個用戶,你需要重新開始。雖然這是不幸的,但背後有一個很好的理由。作爲用戶瀏覽時,你花時間等待這些ajax調用,而且它們很小。如果您不得不等待頁面加載的總和,那麼等待時間可能會很長。加載時間是爲什麼這不是在野外完成的原因。

我會說你目前的做法沒有錯。讓用戶重新創建或重新瀏覽其動態內容。

+0

非常感謝您的評論。與此同時,我正在考慮一個合理的解決方案來實現我的目標。它突然想起了最新的Web瀏覽器的本地存儲功能。我可以存儲獲取的最後一批文檔,然後調用WS並獲取所有結果或(爲什麼不)將整個HTML存儲在那裏,並避免調用WS。你會建議什麼? – Max

相關問題