如何在不加载整个页面的情况下加载更多帖子?

时间:2015-11-27 06:45:26

标签: php jquery ajax load

在我的主页中,我通过以下代码显示了我表格的最后三行:

$result = mysql_query("SELECT  id, title, date, text FROM news WHERE hshs=1 ORDER BY date DESC LIMIT $p") or die(mysql_error());

$p来自哪里:

$p = $_GET['page'];

if ( empty($p) ) {
    $p = 2;
    $more = 4;
} 
else{
    if ( $p < $postnum ) {
        $more = $p + 2;
    }
    else{
        $finish = 1;
    }       
}

$postnum是行数。

然后,我有这一行加载更多帖子:

if ( $finish != 1 ) {
    echo '<center><strong><a id="loadmore" href="?page='.$more.'">Load more posts...</a></strong></center>';
}

这很好地完成了它的工作。但我有一个问题。我不想再次加载整个页面来加载更多帖子。因为这将从它的顶部再次显示页面!我希望页面保持原样,而不是将用户滚动到顶部,然后加载更多帖子。

希望你能理解我! :)

2 个答案:

答案 0 :(得分:0)

步骤1)点击&#34;加载更多帖子调用Ajax请求。&#34;。

步骤2)PHP将返回更多帖子作为对Ajax请求的响应。

步骤3)将Ajax结果附加到适当的div中(最好使用jQuery)。

注意:在MySQL查询中使用限制以获得正确的分页机制。

答案 1 :(得分:0)

使用jQuery

jQuery( document ).on( 'click', '#loadmore', function() {

    jQuery.ajax({

        url: "./path-to-your-sql-load",
        data: {

            ajax: '1',
            page: '<?php echo $page+1; ?>'

        },
        method: 'get',
        success: function( response ) {

            console.log( response );
            jQuery( '#results' ).append( response );

        }

    });

} );

在你的SQL加载中,你可以检查它是否是这样的ajax:

if( $_GET[ 'ajax' ] == '1' ):

    // ajax

else:

    // no ajax

endif;