我有一个网站,我建立了一个无限滚动,当你滚动它加载下一个X结果,但我想知道是否标准或更好/首选的信号方式你已经走到尽头而不是做任何更多的请求。
目前在数据“结束”之后请求数据时只需404秒。如果AJAX调用收到错误/ 404响应,那么它将记住不再打电话。
但对我而言,感觉有点原始,并且想知道通常(如果有的话)解决这个问题的方法是什么。
答案 0 :(得分:1)
你是如何处理分页的?通常建议在AJAX响应中包含“下一页”链接。如果这样做,它可以避免在客户端上进行数学运算,并提供简单的通信机制,如果链接无效,则不要包含链接。
答案 1 :(得分:1)
如果Ajax返回HTML或文本,则只返回一个空响应,表示没有更多数据。
如果Ajax返回JSON,那么您只需将“status”属性添加到对象表示中。
无论哪种方式,您都应该回复HTTP 200,而不是404.
答案 2 :(得分:1)
如果我们假设您的“获得结果”API调用看起来像这样:
$.get('/results', { start: n }, function() ...); // for ex, /results?start=0
并返回类似的内容:
[{ name: 'Result 1' }, { name: 'Result 2' }, ... ]
其中n
是已加载的结果数,那么在语义上返回404错误并不是真的有意义,这意味着所请求的资源({{1} }}) 不存在。这不是真的; /results
确实存在,但请求参数不会产生任何数据。
使用空数组返回200更合适
/results
...或使用HTTP 204 No Content响应,这意味着请求成功,但没有任何内容可以返回。这样可以节省几个字节,因为服务器无需发送[]
或Content-Type
标头和响应正文。
(我会使用204。)
无论哪种方式,您的客户端脚本都知道204或长度为0的数组意味着没有更多数据,并且可以停止发出请求。