[英]How to signal end of infinite scroll in AJAX response?
我有一個網站,我建立了一個無限滾動,當你滾動它加載下一個X結果,但我想知道是否有一個標准的或更好的/首選的信號方式你已經走到盡頭而不再做任何請求。
目前,在數據“結束”之后請求數據時,它只有404秒。 如果AJAX調用收到錯誤/ 404響應,那么它將記住不再打電話。
但對我來說,它感覺有點原始,並想知道通常(如果有的話)解決這個問題的方式是什么。
你是如何處理分頁的? 通常建議在AJAX響應中包含“下一頁”鏈接。 如果這樣做,它可以避免在客戶端上進行數學運算,並提供簡單的通信機制,如果鏈接無效則不要包含鏈接。
如果Ajax返回HTML或文本,則只返回一個空響應,表示沒有更多數據。
如果Ajax返回JSON,那么您只需將“status”屬性添加到對象表示中即可。
無論哪種方式,你應該回應HTTP 200,而不是404。
如果我們假設您的“獲得結果”API調用看起來像這樣:
$.get('/results', { start: n }, function() ...); // for ex, /results?start=0
並返回如下內容:
[{ name: 'Result 1' }, { name: 'Result 2' }, ... ]
其中n
是已經加載的結果數,那么返回404錯誤在語義上並沒有意義,這意味着所請求的資源 ( /results
)不存在。 這不是真的; /results
確實存在,但請求參數不會導致數據。
返回帶有空數組的200更合適
[]
...或者使用HTTP 204 No Content回復,這意味着請求成功,但沒有任何回復。 這確實節省了幾個字節,因為服務器不需要發送Content-Type
或Content-Length
頭和響應主體。
(我用的是204.)
無論哪種方式,您的客戶端腳本都知道204或長度為0的數組意味着沒有更多數據,並且可以停止發出請求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.