如何在AJAX响应中发出无限滚动的结束信号?

时间:2013-07-23 16:39:14

标签: javascript ajax http infinite-scroll

我有一个网站,我建立了一个无限滚动,当你滚动它加载下一个X结果,但我想知道是否标准或更好/首选的信号方式你已经走到尽头而不是做任何更多的请求。

目前在数据“结束”之后请求数据时只需404秒。如果AJAX调用收到错误/ 404响应,那么它将记住不再打电话。

但对我而言,感觉有点原始,并且想知道通常(如果有的话)解决这个问题的方法是什么。

3 个答案:

答案 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的数组意味着没有更多数据,并且可以停止发出请求。