使用ajax实现分页技术

发布时间 - 2026-01-10 22:56:58    点击率:

ajax分页效果图如下:

首先,先看 HTML 代码和 CSS 代码,我们需要一个 table 和一个 footer:

<div id="global">
<div id="table">
 <table>
 <col width="19%">
 <col width="19%">
 <col width="19%">
 <col width="19%">
 <col width="24%">
 <tr>
 <th>日期</th>
 <th>时间</th>
 <th>事件</th>
 <th>报警画面</th>
 <th>事件备注</th>
 </tr>
 </table>
 </div>
 <div id="footer">
 <span id="summary"></span>
 <ul id="pagination">
 <li id="01">首页</li>
 <li id="02">上一页</li>
 <li id="03">下一页</li>
 <li id="04">最后一页</li>
 </ul>
 <div id="select">
 <span>跳转到 </span>
 <input type="text" name="page_num">
 <span> 页 </span>
 <input type="button" name="go_btn" value="跳转">
 </div>
 </div>
</div>

下面是 css 代码:

#global{
 position: relative;
}
#table{
 position: absolute;
 top:19%;
 left:1.6%;
 width: 55%;
}
#table textarea{
 width: 10vw;
 height: 10vh;
 background-color: transparent;
 color: #fff;
 border-width: 0;
 text-align: center;
}
table, th, td {
 border: 0.2px solid rgba(60,166,206,0.2);
 border-collapse: collapse;
 color:rgba(60,166,206,1); 
}
th, td {
 padding: 3px;
 text-align: center;
 font-size: 1.6vmin;
}
td{
 background: rgba(2,29,54,1);
}
th{
 background: rgba(20,29,54,1);
 padding: 1.8% 0;
 color: rgba(255,255,255,0.8);
}
#footer{
 position: absolute;
 bottom:5vh;
 left:7vw;
 text-align: center;
 color: rgba(60,166,206,1);
}
#pagination{
 display: inline-block;
}
#pagination li{
 display: inline;
}
#select{
 display: inline-block;
 margin-left: 40px;
}
#select input[type="text"]{
 width: 30px;
 height: 20px;
 background-color: #000;
 border-width: 1px;
}
#select input[type="button"]{
 width: 40px;
 height: 23px;
 background: #000;
 border:none;
}
ul li{
 cursor: pointer;
}

初始化开始日期,结束日期,请求的页数,请求的每页数量,总共有多少页数据,并通过 ajax 将这些数据传给后台提供的 API 数据接口,进而从数据库中获取到数据,然后可以在前端展示:

var start_date = "2017-01-01", end_date = "2017-01-08";
var pageNo = 1;
var pageSize = 4;
var pages = 0;

如何获取表格的数据并将其 append 到前端?如何获取分页的数据并将其 append 到前端?使用下面我们定义的函数:

loadData(pageNo, pageSize);

接下来看这个函数如何跟 API 数据接口沟通:

function loadData(pageNo, pageSize){
 $(".detail").remove(); //每次重新从 API 数据接口获取数据都要先清除原先表格 `<tr>` 的内容
 $.ajax({
 url: "/history_alarm",
 type: "POST",
 data: JSON.stringify({date:date, page_num:pageNo, page_size:pageSize}),
 success:function(result){
 var results = JSON.parse(result);
 var list = results.alarm;
 var totalCount = results.alarm_count;
 pages = results.page_count;
 if(list.length != 0){
  for(var i=0; i<list.length; i++){
  var alarm_id = list[i].alarm_id;
  var alarm_pic = list[i].alarm_pic;
  var date = list[i].date;
  var event = list[i].event;
  var time = list[i].time;
  var remark = list[i].remark;
  appendData(alarm_id, alarm_pic, date, event, time, remark);
  addEvent(alarm_id);
  }
  $("#table").show();
  $("#footer").show();
  displayFooter(totalCount, pages, pageNo);
 } else{
  $("#table").hide();
  $("#footer").hide();
 }
 },
 error:function(){
 //error handle function
 }
 });
 }

在 loadData 这个函数中我们还定义了另外3个函数,接下来我们先来看 appendData:

//注意到我们将 `alarm_id` 作为 `<textarea>` 'class` 的值,也作为提交按钮 `id` 的值,这是因为我们要通过 ajax 将用户输入到某一个 `<textarea>` 的值作为参数传给后台 API 接口,由其写入数据库。
function appendData(alarm_id, alarm_pic, date, event, time, remark){
 var text = '<tr class="detail"><td>'+date+'</td><td>'+time+'</td<td>'+event+'</td>'+
  '<td><img class="img01" src=data:image/jpeg;base64,' + alarm_pic + '</td>'+
  '<td class="modity_btn"><textarea cols="5" rows="3" 
  class='+alarm_id+'>'+remark+'</textarea>'+'<img id='+alarm_id+' src="{{ 
  static_url("slice/modify.png") }}"></td></tr>';;

 $("#table table").append(text);
 }

//该函数定义了如何通过 ajax 将用户输入到某一个 `<textarea>` 的值作为参数传给后台 API 接口,并写入数据库
function addEvent(alarm_id){
 $("#"+alarm_id).click(function(){
 var remark = $("."+alarm_id).val();
 if(remark != ""){
 $.ajax({
  url:"/history_alarm",
  type:"POST",
  data:JSON.stringify({alarm_id:alarm_id, note:remark}),
  success:function(result){
  var results = JSON.parse(result);
  if(results.status == "ok"){
  console.log('ok');
  }
  }
 })
 }
 })
 }
function displayFooter(totalCount, pages, pageNo){
 var newText = '共' + totalCount + '条,' + '第' + pageNo + '页,' + '共' + pages + '页';
 $("#summary").text(newText);
 }

获取数据的函数写好了,接下来就要点击分页的“首页、上一页、下一页、最后一页、跳转”时候所对应的事件了。思路是这样的:用户点击分页的每一个项目,都要重新判断 pageNo,然后将 pageNo 作为参数,再次调用获取数据的 API 接口:

$("input[name='page_num']").keydown(function(e){ if(e.keyCode == 13){ $("input[name='go_btn']").click(); } });

$("input[name='go_btn']").click(function(){
 var goPage = $("input[name='page_num']").val();
 if(goPage >= 1 && goPage <=pages && goPage != pageNo){
  pageNo = goPage;
  loadData(pageNo, pageSize);
 } else{
  return false;
 }
});

$("#01").click(function(){
 pageNo = 1;
 loadData(pageNo, pageSize);
});

$("#04").click(function(){
 pageNo = pages;
 loadData(pageNo, pageSize);
});

$("#02").click(function(){
 if(pageNo == 1){
  return false;
 } else{
  pageNo--;
  loadData(pageNo, pageSize);
 }
});

$("#03").click(function(){
 if(pageNo == pages){
  return false;
 } else{
  pageNo++;
  loadData(pageNo, pageSize);
 }
});

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# ajax  # 分页  # 用jQuery中的ajax分页实现代码  # JQuery+Ajax无刷新分页的实例代码  # jQuery Pagination Ajax分页插件(分页切换时无刷新与延迟)中文翻译版  # Ajax读取数据之分页显示篇实现代码  # php  # ajax实现分页  # JS+Ajax+Jquery实现页面无刷新分页以及分组 超强的实现  # 使用PHP+JQuery+Ajax分页的实现  # 基于Jquery+Ajax+Json的高效分页实现代码  # jQuery DataTables插件自定义Ajax分页实例解析  # php+ajax实现无刷新分页的方法  # 下一页  # 上一页  # 跳转  # 首页  # 好了  # 都要  # 是这样  # 并将其  # 每页  # 有多少  # 注意到  # 要先  # 这是因为  # 数据库中  # 先看  # 由其  # 大家多多  # 跳转到  # 所对应 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 开心动漫网站制作软件下载,十分开心动画为何停播?  Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】  Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例  Android仿QQ列表左滑删除操作  Laravel如何实现API速率限制?(Rate Limiting教程)  实例解析Array和String方法  Linux网络带宽限制_tc配置实践解析【教程】  Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】  Bootstrap CSS布局之列表  edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】  Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程  Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程  java ZXing生成二维码及条码实例分享  高端企业智能建站程序:SEO优化与响应式模板定制开发  JS中对数组元素进行增删改移的方法总结  Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程  Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道  Laravel如何实现数据库事务?(DB Facade示例)  Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】  javascript读取文本节点方法小结  大学网站设计制作软件有哪些,如何将网站制作成自己app?  Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤  android nfc常用标签读取总结  php打包exe后无法访问网络共享_共享权限设置方法【教程】  如何在Windows环境下新建FTP站点并设置权限?  如何为不同团队 ID 动态生成多个“认领值班”按钮  JS实现鼠标移上去显示图片或微信二维码  Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】  Laravel项目怎么部署到Linux_Laravel Nginx配置详解  Laravel如何使用withoutEvents方法临时禁用模型事件  Laravel怎么使用Intervention Image库处理图片上传和缩放  今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】  ,南京靠谱的征婚网站?  如何在 React 中条件性地遍历数组并渲染元素  Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】  高端建站三要素:定制模板、企业官网与响应式设计优化  如何在七牛云存储上搭建网站并设置自定义域名?  Laravel如何为API生成Swagger或OpenAPI文档  Laravel如何集成Inertia.js与Vue/React?(安装配置)  Laravel怎么实现模型属性的自动加密  Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  Laravel怎么清理缓存_Laravel optimize clear命令详解  如何在IIS服务器上快速部署高效网站?  Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】  如何实现建站之星域名转发设置?  Win11怎么开启自动HDR画质_Windows11显示设置HDR选项  HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】  JavaScript如何实现类型判断_typeof和instanceof有什么区别  Laravel如何使用Passport实现OAuth2?(完整配置步骤)