1

我有一个网站,我为它构建了一个无限滚动,当你滚动它时它会加载下一个 X 结果,但我想知道是否有标准或更好/首选的方式来表示你已经结束并且不再做任何请求.

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

但对我来说,这感觉有点生硬,我想知道处理这个问题的通常(如果有的话)方式是什么。

4

3 回答 3

1

If you Ajax is returning HTML or text, then just return an empty response to signify that there is no more data.

If the Ajax is returning JSON, then you can just add "status" property to the object representation.

Either way you should probably respond with HTTP 200, not 404.

于 2013-07-23T16:47:55.310 回答
1

如果我们假设您的“获取结果”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-TypeContent-Length响应正文。

(我会使用204。)

无论哪种方式,您的客户端脚本都知道 204 或长度为 0 的数组意味着没有更多数据,并且可以停止发出请求。

于 2013-07-23T18:24:05.320 回答
1

你是如何处理分页的?通常建议在您的 AJAX 响应中包含“下一页”链接。如果这样做,它可以避免在客户端上进行数学运算,并提供一种简单的通信机制,如果链接无效,请不要包含链接。

于 2013-07-23T16:43:41.437 回答