DataTables PHP AJAX 分页

article/2025/10/20 9:29:36

 

DataTables 是一个 jQuery 插件,可以更轻松地在网页上添加分页。

只需要添加记录列表,它就会自动调整数据并创建具有搜索和排序功能的分页。

有一些选项可用于实现AJAX 分页。

在本教程中,我将展示如何使用 PHP 在 DataTables 中实现 AJAX 分页。


1.表结构

创建employee表。

CREATE TABLE `employee` (`id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,`emp_name` varchar(80) NOT NULL, `salary` varchar(20) NOT NULL,`gender` varchar(10) NOT NULL,`city` varchar(80) NOT NULL,`email` varchar(80) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2.配置

config.php为数据库创建一个连接。

代码

<?php$host = "localhost"; /* Host name */
$user = "root"; /* User */
$password = ""; /* Password */
$dbname = "tutorial"; /* Database name */$con = mysqli_connect($host, $user, $password,$dbname);
// Check connection
if (!$con) {die("Connection failed: " . mysqli_connect_error());
}

3.下载并包含

  • 从这里下载DataTables
  • <head>部分引用datatables.min.cssdatatables.min.js,还包括 jQuery 库。
  • 您也可以使用 CDN。
<!-- Datatable CSS -->
<link href='//cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css' rel='stylesheet' type='text/css'><!-- jQuery Library -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script><!-- Datatable JS -->
<script src="//cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>

4. HTML

创建<table id='empTable' class='display dataTable'>并添加列名 <thead>

代码

<!-- Datatable CSS -->
<link href='//cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css' rel='stylesheet' type='text/css'><!-- jQuery Library -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script><!-- Datatable JS -->
<script src="//cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script><!-- Table -->
<table id='empTable' class='display dataTable'><thead><tr><th>Employee name</th><th>Email</th><th>Gender</th><th>Salary</th><th>City</th></tr></thead></table>

5.脚本

在 <table id='empTable'>上初始化 DataTable。

在方法中传递选项以启用服务器端处理并将 AJAX 发布请求发送到ajaxfile.php.

columnsAJAX 成功回调时读取的选项传递字段名称。

代码

$(document).ready(function(){$('#empTable').DataTable({'processing': true,'serverSide': true,'serverMethod': 'post','ajax': {'url':'ajaxfile.php'},'columns': [{ data: 'emp_name' },{ data: 'email' },{ data: 'gender' },{ data: 'salary' },{ data: 'city' },]});
});

6. PHP

创建一个新的ajaxfile.php.

读取$_POST值并存储在 AJAX 请求期间 DataTable 传递的变量中 - 绘制、开始、长度、顺序、列索引、列名、顺序和搜索。

如果$searchValue不为空,则准备搜索查询。

计算employee表中记录的总数。

使用employee表中的搜索过滤器计算记录总数。

两个计数在第一次返回相同的值。不同之处在于,当从 DataTable 中搜索值时,带有过滤器的记录计数将用于显示 – 从 DataTable 中的总记录中过滤的记录数。

employee表中获取记录。

循环记录并$data使用关联数组初始化Array。在 Array 中,key 将与columnsDataTable 初始化时在option 中定义的相同。

准备$response一个具有 draw、iTotalRecords、iTotalDisplayRecords 和 aaData 键的数组。

返回$responseJSON 格式。

代码

<?php
## Database configuration
include 'config.php';## Read value
$draw = $_POST['draw'];
$row = $_POST['start'];
$rowperpage = $_POST['length']; // Rows display per page
$columnIndex = $_POST['order'][0]['column']; // Column index
$columnName = $_POST['columns'][$columnIndex]['data']; // Column name
$columnSortOrder = $_POST['order'][0]['dir']; // asc or desc
$searchValue = mysqli_real_escape_string($con,$_POST['search']['value']); // Search value## Search 
$searchQuery = " ";
if($searchValue != ''){$searchQuery = " and (emp_name like '%".$searchValue."%' or email like '%".$searchValue."%' or city like'%".$searchValue."%' ) ";
}## Total number of records without filtering
$sel = mysqli_query($con,"select count(*) as allcount from employee");
$records = mysqli_fetch_assoc($sel);
$totalRecords = $records['allcount'];## Total number of record with filtering
$sel = mysqli_query($con,"select count(*) as allcount from employee WHERE 1 ".$searchQuery);
$records = mysqli_fetch_assoc($sel);
$totalRecordwithFilter = $records['allcount'];## Fetch records
$empQuery = "select * from employee WHERE 1 ".$searchQuery." order by ".$columnName." ".$columnSortOrder." limit ".$row.",".$rowperpage;
$empRecords = mysqli_query($con, $empQuery);
$data = array();while ($row = mysqli_fetch_assoc($empRecords)) {$data[] = array( "emp_name"=>$row['emp_name'],"email"=>$row['email'],"gender"=>$row['gender'],"salary"=>$row['salary'],"city"=>$row['city']);
}## Response
$response = array("draw" => intval($draw),"iTotalRecords" => $totalRecords,"iTotalDisplayRecords" => $totalRecordwithFilter,"aaData" => $data
);echo json_encode($response);

7.结论

确保 AJAX 响应数据中的字段名称应与columnsDataTable 初始化期间数据中定义的字段名称相同,否则不会读取字段值。

serverMethod如果您想发送 GET 类型的 AJAX 请求,请删除选项,那么您还需要更新 AJAX 文件。


http://chatgpt.dhexx.cn/article/Wc82G7Oy.shtml

相关文章

html ajax分页,简单ajax 分页

简单分页&#xff1a; 效果图&#xff1a; 思路&#xff1a; 数据渲染》数据遍历(每页显示已规定好的条数).bindList()和执行分页渲染.initPaginator() 点击分页和下一页的时候&#xff0c;重新请求数据渲染&#xff0c;对应的数据重新遍历。 代码实现&#xff1a; html:分页测…

Ajax做分页

用这种ajax做分页的方法比较简单&#xff0c;把代码直接复制就可以&#xff0c;然后根据实际更改一下里面的参数。 1.设置分页显示显示的样式&#xff0c;显示效果如下。 <style type"text/css"> *{ margin:0px auto; padding:0px; font-family:"微软雅黑…

ajax实现分页操作

利用ajax请求数据的特点&#xff0c;来实现分页操作。 主要是利用ajax进行后端分页&#xff0c;当点击对应的页数&#xff0c;ajax请求数据库对应的数据&#xff0c;后端分页可以降低前端请求数据的压力&#xff0c;页面渲染起来比较流畅。 根据后台请求的数据&#xff0c;来创…

XUnit测试框架-Python unittest

选择 语言选择 本次个人作业我选择的语言是Python,了解学习Python有一段时间了但是一直没有练习&#xff0c;所以这次玩蛇&#xff0c;使用的版本是Python3.6。 开发工具选择 我选择的IDE是Pycharm,个人认为Pycharm是一款不错的Py开发工具&#xff0c;用起来得心应手&#xff0…

单元测试-xUnit

单元测试-xUnit Assert常用方法 名称描述Eqalexpected.result)断言结果与期望值相等。该方法的重载版本用于比较不同的类型和集合。该方法的另一种版本接受一个额外参数该对象实现了用于比较对象的IEqualityComparer接口NotEqual(expected,result)断言结果不等于期望值True(r…

xUnit安装及注意事项

前言 对于单元测试&#xff0c;想必大家都已再熟悉不过了&#xff0c;同时单元测试的重要性也越发突出&#xff0c;在招聘中也特别强调单元测试&#xff0c;但是对于微软内置的单元测试还是太过于繁琐&#xff0c;于是都在寻找一种简洁并且更加轻量的测试工具。用的最多的莫过于…

Xunit.net 单元测试学习——按顺序测试

最近一直在提高编码的质量&#xff0c;为了保证质量&#xff0c;必须有一套趁手的兵器&#xff0c;Xunit.Net 就是如此霸气的利器。 怎么编写单元测试 怎么会有如此低级的疑问呢&#xff1f;因为从接触单元测试&#xff0c;到使用上&#xff0c;真的不是一个简单的心路历程&am…

单元测试-xUnit总结

xUnit总结 什么是xUnit xUnit.net是针对.NET Framework的免费&#xff0c;开源&#xff0c;以社区为中心的单元测试工具。 自动化测试的优点 可以频繁的进行测试可以在任何时间进行测试&#xff0c;也可以按计划定时进行&#xff0c;例如&#xff1a;可以在半夜进行自动化测…

单元测试之 Xunit

&#xfeff;&#xfeff; 单元测试项目中引入 xunit.dll 1. 有类 Common&#xff0c;中有方法 Divide(int a, int b)&#xff0c;代码如下 public class Common {public int Divide(int a, int b){if (b 0)return 0;return a / b;} } 2. 在单元测试项目中为方法 Divide 写单元…

使用 xunit 编写测试代码

使用 xunit 编写测试代码 Intro xunit 是 .NET 里使用非常广泛的一个测试框架&#xff0c;有很多测试项目都是在使用 xunit 作为测试框架&#xff0c;不仅仅有很多开源项目在使用&#xff0c;很多微软的项目也在使用 xunit 来作为测试框架。 Get Started 在 xunit 中不需要标记…

C#_Unit Testing 一(xUnit)

一、前言 在VS中新建一个xunit的项目&#xff0c;该项目中已经自动安装了一些Nuget包&#xff0c;其中一个关键的就是xunit&#xff0c;https://xunit.net/。 同时&#xff0c;在同一个解决方案下我们也新建了一个类库&#xff0c;这个类库就是需要被测试的。这里提一点&…

在.NET开发中的单元测试工具之(2)——xUnit.Net

在上一篇《在.NET开发中的单元测试工具之(1)——NUnit》中讲述了如何使用NUnit在.NET开发中进行单元测试以及NUnit的一些缺点&#xff0c;今天将讲述如何使用xUnit.Net来进行单元测试。 xUnit.Net介绍 xUnit.net的创造者的创造者是Jim Newkirk和Brad Wilson从包括NUnit及其它单…

单元测试中Assert详解-xUnit

前一篇&#xff1a;详谈单元测试-xUnit 简介 Assert 是基于代码的返回值、对象的最终状态、事件是否发生等情况来评估测试的结果。Assert 的结果可能是 Pass 或者 Fail。如果所有的 Asserts 都通过了&#xff0c;那么整个测试就通过了。如果任何 Asserts 失败了&#xff0c;那…

xUnit-Moq框架

基于上一次的单元测试-xUnit进行 Models文件夹 Staff类修改为&#xff1a; public class Staff { public int Id { get; set; } public string Name { get; set; } public string State { get; set; } public int Age { get; set; } } 创建一个IRepository接口…

xUnit.net入门

xUnit.net是一个免费的、开源的、以社区为中心的.net框架单元测试工具。 本文在Win10Visual Studio2022-Preview下&#xff0c;创建一个简单的.Net Framework4.8的xUnit.net测试项目。 1、新建项目 打开VS2022&#xff0c;新建项目&#xff0c;弹出“创建新项目”窗口&#…

xUnit总结--学习笔记

xUnit.net是针对.NET Framework的免费&#xff0c;开源&#xff0c;以社区为中心的单元测试工具。 自动化测试的优点# 可以频繁的进行测试可以在任何时间进行测试&#xff0c;也可以按计划定时进行&#xff0c;例如&#xff1a;可以在半夜进行自动化测试比人工测试速度快可以更…

Xunit入门

本节记录Xunit单元测试的入门知识&#xff0c;以2.1版本作为入门示例。 1、新建一个类库项目 2、在Nuget中搜索xunit&#xff0c;这里我们只选xUnit.net和xunit.runner.visualstudio包。 其中xUnit是框架&#xff0c;而xunit.runner.visualstudio是vs插件包&#xff0c;让我们可…

3. 使用xUnit进行单元测试

实现.NET Core时&#xff0c;xUnit可用于创建单元测试&#xff0c;.NET Core团队使用了该产品。xUnit是一个开源实现方案&#xff0c;创建NUnit 2.0的开发人员创建了它。现在&#xff0c;.NET Core命令行界面支持MSTest和xUnit。 提示&#xff1a; xUnit的文档可参阅https://…

详谈单元测试-xUnit

简介 xUnit.net 是针对 .NET 的免费&#xff0c;开源单元测试框架&#xff0c;可并行测试、数据驱动测试。测试项目需引用被测试项目&#xff0c;从而对其进行测试&#xff0c;测试项目同时需要引用 xUnit。测试编写完成后&#xff0c;用 Test Runner 来测试项目&#xff0c;T…

01 如何利用xUnit框架对测试用例进行维护-xUnit简介及基本使用方法(基于Junit4)

1、xUnit是什么 先看Wikipedia上的解释 xUnit是一系列测试框架的统称&#xff0c;最开始来源于一个叫做Smalltalk的SUnit框架&#xff0c;现在各种面向对象的语言&#xff0c;如Java、Python的鼻祖就是Smalltalk&#xff0c;后来这些语言都借助了Sunit框架的理念&#xff0c;有…