-1

看到数据表我无法实现这个目标。现在我可以用不同的方式加载它们,使用 ajax(通过使用服务器端)不同的行和不同的顺序,但现在我不能加载行,例如 4 或 5 次进行多个请求 ajax(我想使用滚动一点一点地加载)。

我怎么能这样做?

4

1 回答 1

3

如何修改您的 ajax 以加载 x 行数,从第一行开始,然后当最后一个条目的顶部偏移量出现时,您可以在同一个文件上触发另一个 ajax 事件,但使用 x 来知道最后一行是什么被加载,所以它会知道从哪一行开始加载?

假设它最初加载第 0-5 行,当第 5 行出现时,它会触发一个事件,该事件将通过相同的 ajax 但值为 5,因此它将从 6 开始并加载接下来的 6 行,依此类推您可以对初始加载和后续加载使用相同的函数,它只会附加到主元素的 html 中。

编辑 好的,所以我们需要一个提取和格式化数据的 php 文件,以及一个包含 ajax 并显示所有内容的 html 文件。

对于 php,类似于:

$offset = 0;
$sql = "SELECT * FROM table ORDER BY id LIMIT 20, ".$offset;

然后运行一个循环来格式化你想要的行。

这将使用偏移量的 20 个帖子填充页面,默认情况下为 0。

然后对于 Ajax,有两个部分。首先是在最后一个项目出现时创建一个动作:

var go = true;
function hitbottom() {
    var sh = $(window).scrollTop();
    var wh = $(window).height();
    var ih = $('.item').last().offset().top;
    if ((sh+wh)<ih && go) {
        //run ajax
    }
}

这应该在滚动时运行以在最后一项的顶部到达屏幕底部时触发。

第二个是创建ajax表单,它需要知道显示的最后一行的id。它将使用该值更改 php 文件中 offset 变量的值,然后获取接下来的 20 行并将它们发送回 jquery 以附加到回调中的 html,依此类推...

ajax 部分应设置为 false,然后在回调中将其设置回 true 以重新开始。

要附加数据,您可以使用以下内容:

$('#element').append(data);

这是未经测试的,只是一个想法。我想这类似于您的 Facebook 提要加载方式。一旦你点击底部,它会弹出加载图标,并加载下一组帖子。只有这样,它才会在您触底之前开始加载,因此除非您立即喷射,否则它应该能够非常快速地提取新数据。

这也允许您逐渐增加 html 文件的内容,而不会一次加载大量内容并减慢速度。可能仍有限制,但应该相当大。

于 2013-10-21T19:37:47.330 回答