AJAX实现无刷新数据分页

  使用 AJAX 实现无刷新数据分页可以有效地提高网页的加载速度和用户体验。以下是一个简单的示例,展示了如何使用 AJAX 实现无刷新数据分页:

  HTML 页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>AJAX 分页</title>
    <script src="https://code.jquery.com/jquery-3.6.4.min.js"></script>
</head>
<body>
    <div id="data-container">
        <!-- 数据将通过Ajax填充到这里 -->
    </div>

    <div id="pagination">
        <!-- 分页按钮将通过Ajax填充到这里 -->
    </div>

    <script>
        $(document).ready(function() {
            loadData(1); // 页面加载时加载第一页数据
        });

        function loadData(page) {
            $.ajax({
                url: 'get_data.php',
                type: 'POST',
                data: { action: 'get_data', page: page },
                success: function(response) {
                    $('#data-container').html(response.dataHtml);
                    $('#pagination').html(response.paginationHtml);
                }
            });
        }

        // 点击分页按钮时触发
        $(document).on('click', '.pagination-link', function() {
            var page = $(this).data('page');
            loadData(page);
        });
    </script>
</body>
</html>

  PHP 后端脚本 (get_data.php)

<?php
include 'config.php';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $action = $_POST['action'];

    if ($action === 'get_data') {
        $currentPage = $_POST['page'];
        $pageSize = 10; // 每页显示的条数

        $result = getData($currentPage, $pageSize);
        $dataHtml = generateDataHtml($result['data']);
        $paginationHtml = generatePaginationHtml($result['totalPages'], $currentPage);

        echo json_encode(['dataHtml' => $dataHtml, 'paginationHtml' => $paginationHtml]);
    }
}

function getData($currentPage, $pageSize) {
    global $conn;
    $start = ($currentPage - 1) * $pageSize;
    $sql = "SELECT * FROM your_table LIMIT $start, $pageSize";
    $result = $conn->query($sql);
    $data = [];

    if ($result->num_rows > 0) {
        while ($row = $result->fetch_assoc()) {
            $data[] = $row;
        }
    }

    // 获取总页数
    $totalRows = mysqli_num_rows($conn->query("SELECT * FROM your_table"));
    $totalPages = ceil($totalRows / $pageSize);

    return ['data' => $data, 'totalPages' => $totalPages];
}

function generateDataHtml($data) {
    $html = '<ul>';
    foreach ($data as $item) {
        $html .= '<li>' . $item['column_name'] . '</li>';
    }
    $html .= '</ul>';
    return $html;
}

function generatePaginationHtml($totalPages, $currentPage) {
    $html = '<ul>';
    for ($i = 1; $i <= $totalPages; $i++) {
        $activeClass = ($i == $currentPage) ? 'class="active"' : '';
        $html .= '<li><a href="#" data-page="' . $i . '" ' . $activeClass . ' class="pagination-link">' . $i . '</a></li>';
    }
    $html .= '</ul>';
    return $html;
}

  上述代码中的 your_table 和 column_name 需要替换成你实际的数据库表名和列名。

本站原创内容,如需转载请注明来源:https://www.liutonghui.com/134.html

上一篇 2016-06-12
下一篇 2016-06-25

评论列表(0条)

  • 暂时没有评论!

发表评论

captcha

相关推荐

  • Ajax实现页面无刷新添加数据

      使用 Ajax 可以实现页面无刷新添加数据。Ajax(Asynchronous JavaScript and XML)是一种在不重新加载整个页面的情况下与服务器进行通信的技术。以下是一个简单的例子,演示了如何使用 Ajax 在页面中添加数据而不刷新整个页面。 &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;Ajax添加数据示例&lt;/ti......

    2020-04-16
    15520
  • HTML5中article元素与section元素有什么区别

      在HTML5中,为了使文档的结构更加清晰明确,追加了几个与页眉、页脚、内容区块等文档结构相关联的结构元素。内容区块是指将HTML页面按逻辑分割后的单位。例如对于书籍来说,章、节可以称为内容区块;对于博客网站来说,导航菜单、文章正文、文章的评论等每一个部分都可称为内容区块。   在HTML5中新增的主体结构元素中有两个元素分别article元素与section元素,这两个元素是什么意思?通常用于哪些内容区块?何时用article元素......

    2014-10-27
    18540
  • 再谈PHP错误与异常处理

      请一定要注意,没有特殊说明:本例 PHP Version &lt; 7   说起PHP异常处理,大家首先会想到try-catch,那好,我们先看一段程序吧:有一个test.php文件,有一段简单的PHP程序,内容如下,然后命令行执行:php test.php &lt;?php $num = 0; try { echo 1/$num; } catch (Exception $e){ ......

    2017-06-12
    13780
  • JavaScript正则表达式验证身份证号码是否合法

      正则表达式(regular expression)是一个描述字符模式的对象。下面通过本篇文章给大家介绍js正则表达式验证身份证号码是否合法,需要的朋友可以参考下本篇文章   第一种方法:   在用户注册页面有些需求要求的比较严格,需要对身份证js验证是否合法,通过此功能严格此系统软件,从而过滤到很多水客。下面就此实现方法给大家讲解下。   很多时候我们都是通过一组正则表达式来判断用户输入的身份证是否合法,那在用正则表达式判断之前,你......

    2015-09-05
    16670
  • PHP实现APP微信支付的实例讲解

      一、PHP后台后台生成预支付交易单,返回正确的预支付交易回话标识后再在APP里面调起支付!   官方文档:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_1   根据文档拼接微信需要的参数,这里需要几个方法,直接上代码!   1.传输给微信的参数要组装成xml格式发送,传入参数数组! public function ToXml($data=array()) ......

    2018-08-31
    18680
  • ThinkPHP5使用laypage分页插件实现列表分页功能

      在使用thinkPHP框架做项目的时候,经常会遇到对列表的内容进行分页。thinkPHP框架中自带了分页功能,但是有缺陷。这个缺陷是每次返回每页数据给页面时需要重新加载页面所需要的JS、CSS等资源。如果页面包含的JS过多、过大,会增加流量压力。因此,我们使用laypage插件。每次使用ajax请求获取每页的数据就可以了,不需要重复加载页面。   分页流程   流程说明:   1) 调研App.php中的函数,该函数调用fetch函......

    2018-05-11
    20880
  • 高效jQuery的奥秘

      讨论jQuery和javascript性能的文章并不罕见。然而,本文我计划总结一些速度方面的技巧和我本人的一些建议,来提升你的jQuery和javascript代码。好的代码会带来速度的提升。快速渲染和响应意味着更好的用户体验。   首先,在脑子里牢牢记住jQuery就是javascript。这意味着我们应该采取相同的编码惯例,风格指南和最佳实践。   首先,如果你是一个javascript新手,我建议您阅读 《JavaScri......

    2015-12-09
    14870
  • jQuery Ajax实现批量删除数据

      在 jQuery 中使用 Ajax 实现批量删除的基本思路如下:   在前端,使用 jQuery 监听&ldquo;批量删除&rdquo;按钮的点击事件,收集用户选择的要删除的项目的标识(例如,ID)。   使用 Ajax 发送异步请求到后端,将要删除的项目标识传递给服务器。   在后端,接收到请求后,根据接收到的项目标识进行删除操作,并返回相应的结果给前端。   以下是一个简单的示例代码:   HTML &lt;!DOCTYPE ......

    2015-06-15
    17040