当前位置: 首页 > 面试题库 >

使用带有MySQL数据库的无限滚动

马弘益
2023-03-14
问题内容

我找到了一个很好的ajax / jquery无限滚动插件(http://hycus.com/2011/03/15/infinite-scrolling-
like-new-twitter-with-php-mysql-jquery/
)对我的内容来说很好,但是我遇到一个问题-
它只调用一次loadmore.php脚本。让我显示代码:

在我的index.php文件中:

<script type="text/javascript">
    $(window).scroll(function(){
        if($(window).scrollTop() == $(document).height() - $(window).height()){
            $('div#loadmoreajaxloader').show();
            $.ajax({
                url: "loadmore.php?lastid=" + $(".postitem:last").attr("id"),
                success: function(html){
                    if(html){
                        $("#postswrapper").append(html);
                        $('div#loadmoreajaxloader').hide();
                    }else{
                        $('div#loadmoreajaxloader').html('<center>No more posts to show.</center>');
                    }
                }
            });
        }
    });
</script>

本节将调用我的loadmore.php文件,并将其发送给最后一个帖子。这仅在我第一次滚动到页面底部时才有效,它从loadmore.php加载条目,但不会再次调用loadmore.php。我的loadmore.php文件具有以下代码:

<?php

include('./includes/config.php');

if($_GET['lastid']){
    $query = 'SELECT * FROM db WHERE id < "'.$_GET['lastid'].'" ORDER BY id DESC LIMIT 0,3';
    $result = mysql_query($query);
    while ($rec = mysql_fetch_object($result)) {

    [SET MY VARS]

    ?>

    [HTML & PHP DISPLAYING MY POST]

    <?php
    }
}

?>

在第一个ajax调用之后显示的3个帖子完美地出现了,这正是我希望它们显示正确数据的方式。但是在出现前3个帖子之后,我无法显示下3个帖子。

因此,如果我的index.php上默认有5个帖子,我滚动到底部,ajax调用了3个帖子,它们显示完美,但是即使有很多帖子可以显示,此后也没有任何显示。我的问题在哪里,ajax
/ jquery向导?


问题答案:

您的“如果”条件仅在您第一次滚动时得到满足。因此,从本质上讲,将触发该事件,而不是当您滚动到页面底部时,而是在您开始滚动时。将代码替换为以下内容:

<script type="text/javascript">
    var loading = false;

    $(window).scroll(function(){
        var h = $('#postswrapper').height();
        var st = $(window).scrollTop();

         // the following tests to check if 
         // 1. the scrollTop is at least at 70% of the height of the div, and 
         // 2. another request to the ajax is not already running and 
         // 3. the height of the div is at least 500. 
         // You may have to tweak these values to work for you. 
        if(st >= 0.7*h && !loading && h > 500){
            loading = true;
            $('div#loadmoreajaxloader').show();
            $.ajax({
                url: "loadmore.php?lastid=" + $(".postitem:last").attr("id"),
                success: function(html){
                    if(html){
                        $("#postswrapper").append(html);
                        $('div#loadmoreajaxloader').hide();
                    }else{
                        $('div#loadmoreajaxloader').html('<center>No more posts to show.</center>');
                    }
                    loading = false;
                }
            });
        }
    });
</script>


 类似资料:
  • 问题内容: 我已经安装了 Python 3.4.0 版, 并且希望使用MySQL数据库进行项目。我下载并尝试安装 MySQLdb ,但对于此版本的Python而言并不成功。有什么建议可以解决此问题并正确安装吗? 问题答案: MySQLdb不支持Python 3,但它不是唯一的Python MySQL驱动程序。 mysqlclient本质上是MySQLdb的一个分支,其中合并了Python 3支持(

  • Firebase规则包括: 代码 它会导致一个错误: [错误:flatter/lib/ui/ui_dart_state.cc(166)]未处理的异常:PlatformException(-3,权限被拒绝,)E/flatter(31408):#0 StandardMethodCodec。解码信封(包:flatter/src/services/message_编解码器。dart:569:7)E/fla

  • MySQL连接器是maven依赖项的一部分,所有数据库属性如url、用户名、密码都在application.properties中提到。 获取RuntimeException,例如: 驱动程序com.mysql.jdbc.Driver声称不接受jdbcUrl,jdbc/mysql://10.53.235.141:3306/hms。 请帮忙解决。

  • 目前Internet上流行的网站构架方式是LAMP,其中的M即MySQL, 作为数据库,MySQL以免费、开源、使用方便为优势成为了很多Web开发的后端数据库存储引擎。 MySQL驱动 Go中支持MySQL的驱动目前比较多,有如下几种,有些是支持database/sql标准,而有些是采用了自己的实现接口,常用的有如下几种: https://github.com/go-sql-driver/mysq

  • 我有一个要求,我需要展示一张长桌。它不需要一次全部显示,所以ajax加载它(加载前50条记录,然后每次用户滚动到/超过最后一行的第十行时再获取50行)。 但我不确定分页和无限滚动这两种方式中哪一种更好。我希望用户在返回页面时能够跳转到最后一个滚动到的点(通过后退按钮,当然;如果无论用户何时访问页面,我都可以这样做,那就更好了!)前面的行也可见。同时,为了提高性能,我希望将ajax调用的数量限制在尽

  • 问题内容: 我正在寻找使用React实现无限滚动的方法。我遇到了react-infinite- scroll ,发现它效率低下,因为它只是将节点添加到DOM中,而不会删除它们。React是否有经过验证的解决方案,可以添加,删除和维护DOM中恒定数量的节点。 这是jsfiddle问题。在这个问题中,我想一次仅在DOM中包含50个元素。当用户上下滚动时,应加载和删除其他文件。由于它的优化算法,我们已经