jquery DataTable实现前后台动态分页

下面是jquery DataTable实现前后台动态分页的攻略。

1. DataTable介绍

jQuery DataTable是一个功能强大的插件,它能够将静态的HTML表格转换成功能丰富、交互性强大并且具备搜索、排序和分页功能的表格。它是一个集成了全部必要功能的插件,还具有较高的扩展性,可以轻松地应对不同需求。

2. jQuery DataTable动态分页的实现

数据量较大时,一定要使用后台分页。使用 DataTable 实现后台分页,需要前端发送分页请求到后端,通过后端获取数据之后,把数据以 JSON 格式返回到前端,并根据后端返回的数据的数量来计算出分页数量,从而实现前端分页。以下是前后台动态分页实现的步骤:

2.1 前端配置

  1. 引入 jQuery 和 DataTable 的相关文件:
<!--引入jQuery-->
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<!--引入datatables的css文件-->
<link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/datatables/1.10.21/css/jquery.dataTables.min.css">
<!--引入datatables的js文件-->
<script src="https://cdn.bootcdn.net/ajax/libs/datatables/1.10.21/js/jquery.dataTables.min.js"></script>
  1. 创建表格
<table id="table_id">
    <thead>
        <tr>
            <th>列1</th>
            <th>列2</th>
            .
            .
            .
        </tr>
    </thead>
    <tbody>
    </tbody>
</table>
  1. 设置DataTable属性
$(document).ready( function () {
    var table = $('#table_id').DataTable({
        "processing": true,
        "serverSide": true,
        "ajax": {
            "url": "后台接口地址",
            "type": "POST",
            "data": function(d) {
                d.start = d.start || 0;
                d.limit = d.length || 10;
                return d;
            },
            "dataType": "json"
        },
        "columns": [
            { "data": "列名" },
            { "data": "列名" },
            .
            .
            .
        ]
    });
});

该属性配置了:

  • processing:是否开启加载提示
  • serverSide:是否开启服务端分页
  • ajax:获取数据的接口地址
  • data:向后端发送的数据
  • columns:列配置

2.2 后端实现

针对 DataTable 发送的延迟加载请求进行响应,将分页数据以 json 格式返回到前端。需要注意的是,接口返回的数据需要包含以下的 key 值:

  • recordsTotal:总数据条数
  • recordsFiltered:过滤后的数据条数
  • draw:请求序号,原样返回

以下是具体实现的示例代码:

router.post('/data', async function(ctx, next) {
    const { start, limit } = ctx.request.body
    const currentPage = start / limit + 1
    const data = await getData(currentPage, limit)
    const totalCount = await getTotalCount()
    ctx.body = {
      draw: ctx.request.body.draw || 1,
      recordsTotal: totalCount,
      recordsFiltered: totalCount,
      data,
    }
})

在该代码中,getData() 方法是用于获取分页数据的方法,getTotalCount() 方法是用于获取数据总条数的方法,ctx.request.body 则是从前端获取的数据。

2.3 总结

至此,jQuery DataTable前后台动态分页的实现就完成了。前端在需要分页的时候,会从后端获取数据,然后通过 DataTable 显示到表格中,可以在 DataTable 中自主切换页码。

3. 示例说明

以下两个示例对数据进行了模拟,演示了前后台分页实现效果。

3.1 示例1

假设有如下的服务器端数据:

[
    {
        "name": "张三",
        "age": 25,
        "gender": "男"
    },
    {
        "name": "李四",
        "age": 30,
        "gender": "女"
    },
    {
        "name": "王五",
        "age": 28,
        "gender": "男"
    },
    {
        "name": "赵六",
        "age": 24,
        "gender": "女"
    },
    {
        "name": "陈七",
        "age": 26,
        "gender": "男"
    },
    {
        "name": "高八",
        "age": 29,
        "gender": "女"
    }
]

在前端页面设置如下的 DataTable 配置:

$('#example').DataTable({
    "processing": true,
    "serverSide": true,
    "ajax": {
        "url": "/api/getData",
        "type": "POST",
        "data": function(d) {
            d.start = d.start || 0;
            d.limit = d.length || 10;
            return d;
        },
        "dataType": "json"
    },
    "columns": [
        { "data": "name" },
        { "data": "age" },
        { "data": "gender" }
    ]
});

在请求 /api/getData 接口时,后台会返回第 1 页的数据,而 DataTable 插件会自动地在表格底部生成分页按钮,供用户切换分页显示。

3.2 示例2

在这个示例中,我们假设后台只返回 50 条假数据,前端每次从服务器请求 10 条,前端的代码如下:

$('#example').DataTable({
    "processing": true,
    "serverSide": true,
    "ajax": {
        "url": "/api/getData",
        "type": "POST",
        "data": function(d) {
            d.start = d.start || 0;
            d.limit = d.length || 10;
            return d;
        },
        "dataType": "json"
    },
    "columns": [
        { "data": "id" },
        { "data": "name" },
        { "data": "city" }
    ],
    "language": {
        "lengthMenu": "每页显示 _MENU_ 条记录",
        "zeroRecords": "没有匹配的结果",
        "info": "第 _PAGE_ 页,共 _PAGES_ 页,共 _TOTAL_ 条记录",
        "infoEmpty": "没有记录",
        "infoFiltered": "(从 _MAX_ 条记录中过滤)",
        "oPaginate": {
            "sFirst": "第一页",
            "sLast": "最后一页",
            "sNext": "下一页",
            "sPrevious": "上一页"
        }
    }
});

在请求 api/getData 接口时,依然会返回第 1 页的数据,但是前端会自动选取每页显示 10 条数据,并且在底部显示 Total:50 和 Pages:5 信息。用户可以点击底部的分页按钮切换,DataTable 插件依据用户的操作,请求相应的页数据显示。

至此,本文介绍了 JQuery DataTable 实现前后台动态分页的完整攻略,以及具体的示例说明。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:jquery DataTable实现前后台动态分页 - Python技术站

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

相关文章

  • jQWidgets jqxScheduler bindingComplete事件

    jQWidgets是一款基于jQuery框架开发的UI组件库,提供了众多实用的组件,jqxScheduler是其中一款日程安排组件。其中,bindingComplete事件是jqxScheduler组件提供的一种事件,在数据绑定完成后触发。本文将详细讲解jqxScheduler bindingComplete事件的使用攻略。 一、概述 jqxSchedule…

    jquery 2023年5月11日
    00
  • 在jQuery中,如何在输入字段被修改时附加一个文本信息

    在jQuery中,可以使用change()方法来检测输入字段的修改事件,并使用after()方法来附加文本信息。以下是在jQuery中如何在输入被修改时附加一个文本信息的完整攻略: 步骤一:创建HTML结构 首先需要创建包含输入字段的HTML结构以下是一个示例: <!DOCTYPE html> <html> <head> …

    jquery 2023年5月9日
    00
  • js form action动态修改方法

    动态修改表单的 Action 属性是在表单提交时将表单的数据使用 HTTP 请求发送到 Action 的 URL 地址,实现前端与后端的数据传输,并将数据处理结果显示给用户。使用 JavaScript 可以动态修改表单的 Action 属性来实现动态提交表单的目的。 步骤如下: 获取表单元素并为其添加绑定事件,当事件触发时执行处理函数。 const form…

    jquery 2023年5月27日
    00
  • jQWidgets jqxGrid pagechanged事件

    jQWidgets jqxGrid pagechanged事件详解 jQWidgets jqxGrid 是一种表格控件,用于在 Web 应用程序中创建表格。pagechanged 事件是 jqxGrid 控件的一个事件,用于在分页更改时触发。本文将详讲解 pagechanged 事件的使用方法,并提供两个示例。 事件 pagechanged 事件用于在分页更…

    jquery 2023年5月10日
    00
  • jQWidgets jqxDropDownList indeterminateItem()方法

    jQWidgets jqxDropDownList indeterminateItem()方法详解 jQWidgets是一个基于jQuery的UI组件库,提供了丰富UI组件和工具包。jqxDropDownList是Widgets组,用于实现下拉列表功能。indeterminateItem()是jqxDropDownList的一个方法,用于获取或设置下拉列表的…

    jquery 2023年5月10日
    00
  • Jquery attr()方法 属性赋值和属性获取详解

    Jquery attr()方法:属性赋值和属性获取详解 简介 attr() 方法是 jQuery 中用于获取或设置元素属性的方法。它有两个主要用途: 获取元素的属性值; 设置元素的属性值。 语法 下面是该方法的基本语法: // 获取属性值 $(selector).attr(attribute) // 设置属性值 $(selector).attr(attrib…

    jquery 2023年5月27日
    00
  • jQuery跨域问题解决方案

    jQuery跨域问题解决方案 背景 在浏览器中,当当前页面的域名与所请求的资源的域名不同时,就会产生跨域问题。这是由于浏览器的同源策略(Same Origin Policy)所导致的。 通常我们使用jQuery进行异步请求(Ajax)获取数据时,由于原始方法(XMLHttpRequest)的限制,将会碰到跨域问题。 方案 以下是针对jQuery跨域问题的3个…

    jquery 2023年5月28日
    00
  • jQWidgets jqxBarcode getDataURL()方法

    jQWidgets是一个基于jQuery的UI组件库,提供了丰富的UI组件和工具,包括表格、图表、表单、历、菜单等。其中,jqxBarcode是jQWidgets中的一个条形码组件,可以用于生成各种类型的条码。jqxBarcode提供了getDataURL()方法,可以将条形码转换为DataURL格式。本文将详细介绍jqxBarcode的getDataURL…

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