热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

当后端一次性返回200+数据如何进行分页处理(新)

当后端一次性返回100条数据前端如何进行处理?前端如何将接口返回数据转化成符合前端业务逻辑的数据结构?带着这些问题看文章,希望对你有所帮助

当后端一次性返回100条+数据前端如何进行处理?
前端如何将接口返回数据转化成符合前端业务逻辑的数据结构?
带着这些问题看文章,希望对你有所帮助!

1. 应用场景
2. 思路分析
3. 代码块分析
4. 具体实现代码

应用场景

当后端一次性返回100条+数据前端如何处理?
当后端设计表结构时未设计分页字段,或者采用第三方接口一次性返回所有数据 要求前端实现分页功能?

思路分析

实现需求之前思考这些问题
1.前端实现分页功能首先要搞清楚实现分页功能需要哪些参数?如何去做??
2.如何对接口返回的数据进行处理?后端一次性返回100条数据如何进行处理?

问题解答
1.具体实现分页功能需要的参数有:
pagecount 总页数
page 当前页数
pageNum 页面默认展示数据的条数
pagelist 页面展示数据条数的数组
ctDataList 存放页面展示数据的数组
ctData 存放后端返回的数组

2.页面展示的数据一般默认都是10条,通过函数封装pageDataFn得到新数组ctDataList用于存放页面展示的数组; 至于函数如何封装请仔细阅读代码块分析!
如果后端一次性返回100条数据,通过函数封装也能轻松实现 so easy!!!

代码块分析

1.将接口返回数据进行简单处理

pageDataFn: function (pageNum, page, data) {//条数 当前页 原数组var pagedata = [];var start = (pageNum * page) - pageNum;var end = pageNum * page;end = end > data.length ? data.length : end;for (let i = start; i

2.制作分页按钮

createBtns: function (pagecount, page) {//分页总页数 当前页var tempStr &#61; "",currentPage &#61; pagecount / tempmodel.pageNum,DZpagetotal &#61; parseInt(currentPage),DZstr&#61;&#39;&#39;;//currentPage 总条数&#xff08;不取整&#xff09; DZpagetotal 总条数&#xff08;取整&#xff09;if (currentPage > DZpagetotal) {DZstr &#61; DZpagetotal &#43; 1;} else {DZstr &#61; DZpagetotal;}if (page > 1) {tempStr &#43;&#61; "首页";tempStr &#43;&#61; "上一页"}if (currentPage > 7) {if (tempmodel.page >&#61; 5 ) {tempStr &#43;&#61; "" &#43; 1 &#43; "";tempStr &#43;&#61; "" &#43; &#39;...&#39; &#43; "";var indexstr &#61; tempmodel.page;var indexs&#61;&#39;&#39;;if(tempmodel.page <&#61; DZstr-2){indexs &#61; [indexstr - 2, indexstr - 1, indexstr, indexstr &#43; 1, indexstr &#43; 2];}else if(tempmodel.page <&#61; DZstr-1){indexs &#61; [indexstr - 3,indexstr - 2, indexstr - 1, indexstr, indexstr &#43; 1];}else if(tempmodel.page <&#61; DZstr){indexs &#61; [indexstr - 4,indexstr - 3,indexstr - 2, indexstr - 1, indexstr];}for (var k &#61; 0; k " &#43; indexs[k] &#43; "";}if(tempmodel.page <&#61; DZstr - 3){tempStr &#43;&#61; "" &#43; &#39;...&#39; &#43; "";tempStr &#43;&#61; "" &#43; DZstr &#43; "";}}else {for (var pageIndex &#61; 1; pageIndex <&#61; 5; pageIndex&#43;&#43;) {tempStr &#43;&#61; "" &#43; pageIndex &#43; "";}tempStr &#43;&#61; "" &#43; &#39;...&#39; &#43; "";tempStr &#43;&#61; "" &#43; DZstr &#43; "";}} else {for (var pageIndex &#61; 1; pageIndex " &#43; pageIndex &#43; "";}}if (page 下一页";tempStr &#43;&#61; "尾页";}document.getElementById("pagebarcon").innerHTML &#61; tempStr;},

3.点击分页按钮触发事件

bindClick: function () {var totolImgPage &#61; tempmodel.pagecount/ tempmodel.pageNum&#43;1;// 设置首页、末页、上一页、下一页的点击事件var buttonArr &#61; [&#39;first&#39;, &#39;last&#39;, &#39;prepage&#39;, &#39;nextpage&#39;];for (var j in buttonArr) {var $sigdom &#61;"."&#43; buttonArr[j];$(&#39;body&#39;).delegate($sigdom, &#39;click&#39;, function () {var data &#61; $(this).data(&#39;page&#39;);//获取当前按钮跳转的页数tempmodel.page&#61;data;tempmodel.ctDataList &#61; [];tempmodel.ctDataList &#61; tempmodel.pageDataFn(tempmodel.pageNum, data, tempmodel.ctData);//对页面进行分页tempmodel.createBtns(tempmodel.pagecount, tempmodel.page);$("#pagebarcon .btn").removeClass("attr");$(&#39;.page&#39; &#43; data).addClass("attr");})}for (var k &#61; 1; k <&#61; totolImgPage; k&#43;&#43;) {var $singleDom &#61; &#39;.page&#39; &#43; k;$(&#39;body&#39;).delegate($singleDom, &#39;click&#39;, function () {var data &#61; $(this).data(&#39;page&#39;);tempmodel.page&#61;data;tempmodel.ctDataList &#61; [];tempmodel.ctDataList &#61; tempmodel.pageDataFn(tempmodel.pageNum, data, tempmodel.ctData);//对页面进行分页tempmodel.createBtns(tempmodel.pagecount,data);$("#pagebarcon .btn").removeClass("attr");$(&#39;.page&#39; &#43; data).addClass("attr");})}},

废话不多说&#xff0c;上才&#xff08;代&#xff09;艺&#xff08;码&#xff09;






{{el}}
{{item.index}}{{item.id}}{{item.name}}{{item.number}}{{item.money}}

{{pagecount}}条数据选择每页条数
pageNum">






css样式

* {margin:0;padding:0;}table {width:1000px;margin:0 auto;text-align:center;border-collapse:collapse;border-spacing:0;border:0}table tr td {border:1px solid #eee;height:45px;line-height:45px;}.ms-controller {visibility:hidden}#pagecurrent {width:1000px;margin:0 auto;text-align:right;color:#333;padding:20px 0px 30px;box-sizing:border-box;height:26px;line-height:26px;display:flex;justify-content:flex-end;font-size:13px;}#pagebarcon {display:inline-block}#pagebarcon a {width:32px;height:26px;margin-left:6px;display:inline;text-align:center;line-height:26px;background:#eee;padding:5px 12px;cursor:pointer;}#pagecurrent .sel {width:60px;height:26px;line-height:26px;margin-left:5px;}#pagebarcon a:first-child {margin-left:10px;}.btn.nextpage,.btn.last {height:26px;padding:4.5px 6px;box-sizing:border-box;min-width:55px;margin-left:5px;background:#eee;cursor:pointer;}.btn.last {margin-left:5px;padding-left:12px;padding-right:12px;}#pagebarcon a.attr {background:#409EFF;color:#fff}table {margin-top:20px;border:1px solid #ebeef5}table tr td {border:0;}table tbody tr:nth-child(2n) {background:#fafafa;}table tr {border-bottom:1px solid #ebeef5}table tbody tr:hover {background:#f5f7fa;}.pagespan{padding:0 3px 0 8px;position: relative;top:-4px;font-weight:700;}

效果截图&#xff1a;

在这里插入图片描述

写在最后

功能虽小&#xff0c;做起来却很容易踩坑&#xff0c;希望对您有所帮助&#xff01;如果你觉得这篇文章写得不错或者对您有用的话请帮忙点赞加收藏&#xff0c;毕竟原创不易&#xff1b;如果您觉得这个功能有需要改进的地方也希望留下您的宝贵意见&#xff01;


推荐阅读
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 本文介绍了解决IE678伪类不兼容问题的方法,包括少用CSS3和HTML5独有的属性,使用CSS hacker,使用last-child清除浮动、批量添加标签、去掉list item最后一个的border-right等技巧。同时还介绍了使用after清除浮动时加上IE独有属性zoom:1的处理方法。另外,本文还提到可以使用jQuery代替批量添加标签的功能,以及使用负边距和CSS2选择器element+element去掉list item最后一个的border-right的方法。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • 移动端常用单位——rem的使用方法和注意事项
    本文介绍了移动端常用的单位rem的使用方法和注意事项,包括px、%、em、vw、vh等其他常用单位的比较。同时还介绍了如何通过JS获取视口宽度并动态调整rem的值,以适应不同设备的屏幕大小。此外,还提到了rem目前在移动端的主流地位。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
author-avatar
手哥2502852243
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有