jQuery实现分页功能(含ajax请求、后台数据、附完整demo)

下面我将详细讲解“jQuery实现分页功能(含ajax请求、后台数据、附完整demo)”的完整攻略。

第一步:准备工作

在开始编写代码之前,我们需要引入所需的库文件。这里需要引入jQuery和Bootstrap的js和css文件。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>jQuery分页功能实现</title>
    <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css">
</head>
<body>

    <!-- 内容区域 -->
    <div class="container">
        <div class="row">
            <div class="col-md-8 col-md-offset-2">
                <h1>jQuery分页功能实现</h1>
                <table class="table" id="table">
                    <thead>
                        <tr>
                            <th>#</th>
                            <th>姓名</th>
                            <th>年龄</th>
                        </tr>
                    </thead>
                    <tbody>
                    </tbody>
                </table>
                <nav>
                    <ul class="pagination" id="pagination"></ul>
                </nav>
            </div>
        </div>
    </div>

    <!-- 引入 jQuery -->
    <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
    <!-- 引入 Bootstrap -->
    <script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</body>
</html>

第二步:发送Ajax请求获取后台数据

我们需要编写一个发送Ajax请求的函数,从后台获取数据。这里的请求方式是GET请求,数据返回格式是JSON格式。完整的代码如下:

function getData(page) {
    $.ajax({
        url: "http://your-api-url", // your API url
        type: "GET",
        dataType: "json",
        data: {
            page: page
        },
        success: function(data) {
            // 处理数据
        },
        error: function(jqXHR, textStatus, errorThrown) {
            console.log(jqXHR.responseText);
        }
    });
}

第三步:处理获取的数据并渲染到页面上

在成功获取数据后,我们需要处理数据并将数据渲染到页面上。同时,我们还需要计算分页的相关信息,生成分页按钮。完整的代码如下:

function getData(page) {
    $.ajax({
        url: "http://your-api-url", // your API url
        type: "GET",
        dataType: "json",
        data: {
            page: page
        },
        success: function(data) {
            // 处理数据
            var tbody = $("#table tbody");
            tbody.empty();
            $.each(data.result, function(i, item) {
                var tr = $("<tr>");
                tr.append($("<td>").text((page - 1) * 10 + i + 1));
                tr.append($("<td>").text(item.name));
                tr.append($("<td>").text(item.age));
                tbody.append(tr);
            });

            // 计算分页信息
            var totalPages = Math.ceil(data.total / 10);
            var currentPage = parseInt(page);
            var pagination = $("#pagination");
            pagination.empty();

            // 添加上一页按钮
            if (currentPage !== 1) {
                var li = $("<li>").append($("<a>").attr("href", "#").text("上一页"));
                li.click(function() {
                    getData(currentPage - 1);
                });
                pagination.append(li);
            }

            // 添加数字按钮
            for (var i = currentPage - 2; i <= currentPage + 2; i++) {
                if (i > 0 && i <= totalPages) {
                    var li = $("<li>").append($("<a>").attr("href", "#").text(i));
                    if (i === currentPage) {
                        li.addClass("active");
                    } else {
                        li.click(function() {
                            getData($(this).text());
                        });
                    }
                    pagination.append(li);
                }
            }

            // 添加下一页按钮
            if (currentPage !== totalPages) {
                var li = $("<li>").append($("<a>").attr("href", "#").text("下一页"));
                li.click(function() {
                    getData(currentPage + 1);
                });
                pagination.append(li);
            }
        },
        error: function(jqXHR, textStatus, errorThrown) {
            console.log(jqXHR.responseText);
        }
    });
}

示例说明

下面给出两个示例说明:

示例1:后台数据为静态数据

如果我们的后台数据是静态数据,我们可以在本地使用Mock.js模拟一个API。示例代码如下:

// 准备静态数据
var mockData = Mock.mock({
    "result|30": [{
        "name": "@cname",
        "age|18-60": 1
    }],
    "total": 30
});

// Mock一个API
Mock.mock("/api?page=1", "get", function(options) {
    var queryParams = parseQueryParams(options.url);
    var page = parseInt(queryParams.page) || 1;
    var result = mockData.result.slice((page - 1) * 10, page * 10);
    return {
        "code": 0,
        "message": "success",
        "result": result,
        "total": mockData.total
    };
});

// 解析URL参数
function parseQueryParams(url) {
    var params = {};
    var index = url.indexOf("?");
    if (index !== -1) {
        var queryString = url.substring(index + 1);
        var pairs = queryString.split("&");
        for (var i = 0; i < pairs.length; i++) {
            var pair = pairs[i].split("=");
            if (pair.length === 2) {
                params[pair[0]] = decodeURIComponent(pair[1]);
            }
        }
    }
    return params;
}

// 初始化分页
$(function() {
    getData(1);
});

示例2:后台数据从数据库中读取

如果我们的后台数据从数据库中读取,我们可以编写一个简单的API,从数据库中读取数据。示例代码如下:

// 编写API获取数据
app.get("/api", function(req, res) {
    var page = parseInt(req.query.page) || 1;
    var countPromise = db.collection("users").countDocuments();
    var findPromise = db.collection("users").find().skip((page - 1) * 10).limit(10).toArray();

    Promise.all([countPromise, findPromise]).then(function(results) {
        var total = results[0];
        var result = results[1];
        res.json({
            code: 0,
            message: "success",
            result: result,
            total: total
        });
    }).catch(function(err) {
        console.log(err);
        res.json({
            code: -1,
            message: "failed"
        });
    });
});

// 初始化分页
$(function() {
    getData(1);
});

完整代码

下面是完整代码:

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:jQuery实现分页功能(含ajax请求、后台数据、附完整demo) - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • jQuery中val()方法用法实例

    jQuery中val()方法用法实例 什么是val()方法 val()方法是jQuery中常用的一个方法,它用来获取或设置表单元素的值。表单元素包括输入框、选择框、单选框和复选框等。当用于获取元素的值时,val()方法返回的是元素的值;当用于设置元素的值时,val()方法可以设置元素的值。 获取元素的值 我们可以使用val()方法获取表单元素的值,比如下面的…

    jquery 2023年5月27日
    00
  • jQuery UI按钮创建事件

    jQuery UI是jQuery的一个扩展库,用于开发富交互Web应用程序及跨浏览器兼容的UI组件。jQuery UI中包含了很多常用的UI组件,其中包括按钮组件。通过jQuery UI按钮组件,开发者可以很方便地创建各种样式的按钮,并为按钮添加不同的行为。 为了在页面上创建一个jQuery UI按钮,我们首先需要在HTML文件中引入jQuery和jQuer…

    jquery 2023年5月12日
    00
  • jQuery Form表单取值的方法

    当我们使用jQuery编写一个表单提交的时候,有时候需要获取表单中的某些值,比如我们需要获取用户名、密码等输入框中的值,并且对其进行一些处理。那么,如何使用jQuery获取表单中的值呢? 一、常见表单元素取值的方法 获取<input>标签的值 我们可以使用val()函数来获取<input>标签中的值,比如获取用户名和密码的值: var…

    jquery 2023年5月28日
    00
  • jQWidgets jqxDropDownButton dropDownVerticalAlignment属性

    jQWidgets 的 jqxDropDownButton 组件是一个带有下拉菜单的按钮控件。dropDownVerticalAlignment 属性可以用于控制下拉菜单的垂直对齐方式。本攻略中,我们将详细讲解如何使用 dropDownVerticalAlignment 属性,并提供两个示例说明。 步骤1:创建一个 jqxDropDownButton 首先,…

    jquery 2023年5月10日
    00
  • jQuery UI Autocomplete change事件

    jQuery UI 的 Autocomplete 组件提供了一个 change 事件,该事件在 Autocomplete 的值发生变化时触发。在本教程中,我们将详细介绍 Autocomplete 的 change 事件的使用方法。 change 事件基本语法如下: $( ".selector" ).autocomplete({ chang…

    jquery 2023年5月11日
    00
  • 动态加载jQuery的两种方法实例分析

    下面我将为你详细讲解如何动态加载jQuery的两种方法实例分析,过程中将包含两条示例说明。 动态加载jQuery的两种方法实例分析 在某些情况下,我们需要在网页中动态地加载jQuery,以便使用其提供的强大功能。以下是两种动态加载jQuery的方法: 方法一:通过script标签动态加载jQuery 我们可以使用document.createElement方…

    jquery 2023年5月27日
    00
  • 如何在jQuery中通过数据属性值过滤对象

    在jQuery中,我们可以使用数据属性值来过滤对象。这是一种非常有用的技术,可以帮助我们根据特定的条件选择和操作元素。下面是一个完整攻略,包括两个示例说明。 步骤1:创建HTML和CSS 首先,我们需要创建一个HTML和CSS,以便在页面中显示一些元素。下面是一个示例HTML和CSS: <!DOCTYPE html> <html> &…

    jquery 2023年5月9日
    00
  • js原生态函数中使用jQuery中的 $(this)无效的解决方法

    当我们在原生态js代码中想要使用jQuery中的选择器 $(this) 时,会发现 $(this) 不能正常工作,原因是 $(this) 是 jQuery 对象,原生 js 不知道该如何处理 jQuery 对象。但是我们可以使用一些实用技巧解决这个问题。 一、使用apply()或者call()方法我们可以使用apply()或者call()方法,来改变函数内部…

    jquery 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部