You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改PHP+AJAX分页代码限制显示的页码数量

解决方案

你现有代码的核心问题是PHP逻辑直接遍历输出了全部页码,没有根据当前页码裁剪展示范围,同时jQuery的事件绑定方式不兼容AJAX动态加载的分页元素,修改方案如下:


第一步:修改PHP分页代码

调整后可实现仅展示当前页附近的指定数量页码,超出部分用省略号替代:

<?php
if (!empty($total_pages)) {
    // 获取当前页码,默认第1页
    $current_page = isset($_GET['page']) ? intval($_GET['page']) : 1;
    // 配置当前页左右各展示2个邻近页码,可自行调整数值
    $adjacent_count = 2;
    // 计算要展示的页码起止范围,处理边界异常
    $start = max(1, $current_page - $adjacent_count);
    $end = min($total_pages, $current_page + $adjacent_count);

    // 前置省略号逻辑:起始页码大于1时输出首页+省略号
    if ($start > 1) {
        ?>
        <li class="page-item" id="1">
            <a href="JavaScript:Void(0);" data-cat-id="3" data-id="1" class="page-link">1</a>
        </li>
        <?php if ($start > 2) { ?>
            <li class="page-item disabled"><span class="page-link">...</span></li>
        <?php }
    }

    // 循环输出指定范围内的页码
    for ($i = $start; $i <= $end; $i++) {
        $active = $i == $current_page ? 'active' : '';
        ?>
        <li class="page-item <?php echo $active; ?>" id="<?php echo $i; ?>">
            <a href="JavaScript:Void(0);" data-cat-id="3" data-id="<?php echo $i; ?>" class="page-link"><?php echo $i; ?></a>
        </li>
        <?php
    }

    // 后置省略号逻辑:结束页码小于总页数时输出省略号+尾页
    if ($end < $total_pages) {
        <?php if ($end < $total_pages - 1) { ?>
            <li class="page-item disabled"><span class="page-link">...</span></li>
        <?php } ?>
        <li class="page-item" id="<?php echo $total_pages; ?>">
            <a href="JavaScript:Void(0);" data-cat-id="3" data-id="<?php echo $total_pages; ?>" class="page-link"><?php echo $total_pages; ?></a>
        </li>
        <?php
    }
}
?>

第二步:修改jQuery代码

改用事件委托绑定点击事件,解决AJAX动态加载的分页元素无法触发点击的问题:

<script>
$(document).ready(function() {
    $("#target-content").load("include/pagination.php?page=1&catpage=3");
    // 绑定到document上,兼容所有动态插入的.page-link元素
    $(document).on('click', '.page-link', function(){
        var id = $(this).attr("data-id");
        var catid = $(this).attr("data-cat-id");
        
        var select_id = $(this).parent().attr("id");
        $.ajax({
            url: "include/pagination.php",
            type: "GET",
            data: {
                page : id,
                catpage : catid,
            },
            cache: false,
            success: function(dataResult){
                $("#target-content").html(dataResult);
                $('html, body').animate({
                    scrollTop: $("#target-content").offset().top
                }, 2000);
                $(".page-item").removeClass("active");
                $("#"+select_id).addClass("active");
            }
        });
    });
});
</script>

内容的提问来源于stack exchange,提问作者HarsimranSingh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 11:09:01