【Layui】使用TP5实现分页

举报
原来是咔咔 发表于 2022/03/27 00:42:33 2022/03/27
【摘要】 author:咔咔 wechat:fangkangfk 看了很多分页功能都实现不了,要么就是看不明白,遇到不会的先使用之前方案实现,慢慢的就会有思路,然后成功 案例: 一个注意点就是html放置的位置 这里我将整段代码都复制出来,如何你只想实现功能,只需要将html拼接的数据换成你的,然后请求接口换成自...

author:咔咔

wechat:fangkangfk

看了很多分页功能都实现不了,要么就是看不明白,遇到不会的先使用之前方案实现,慢慢的就会有思路,然后成功

案例:

一个注意点就是html放置的位置

这里我将整段代码都复制出来,如何你只想实现功能,只需要将html拼接的数据换成你的,然后请求接口换成自己的即可


      <script type="text/javascript">
         window.onload= function () {
             loadData()  //请求数据
             getPage()     //分页操作
          }
         var page=1; //设置首页页码
         var limit=1;  //设置一页显示的条数
         var total;    //总条数
         function loadData(){
              $.ajax({
                 type:"post",
                 url:"{url(Banner/index)}",//对应controller的URL
                 async:false,
                 dataType: 'json',
                 data:{
                     "page_index":page,
                     "page_size":limit,
                  },
                 success:function(ret){
                      total=ret.total;
                     var data1=ret.data;
                     var html= '';
                     for(var i=0;i<data1.length;i++){
                          html+='<tr>';
                          html+='<td>'+ data1[i].b_id +'</td>';
                          html+='<td>'+ data1[i]['banner_type']['vt_name'] +'</td>';
                          html+='<td>'+ data1[i]['banner_vs_video_name']['vi_title'] +'</td>';
                          html+='<td>'+ data1[i]['b_thumbnailUrl'] +'</td>';
                          html+='<td>'+ data1[i]['b_linkUrl'] +'</td>';
                          html+='<td>'+ data1[i]['b_sort'] +'</td>';
                          html+='<td>'+ data1[i]['b_showType'] +'</td>';
                          html+='<td>'+ data1[i]['b_targetType'] +'</td>';
                          html+='<td>'+ data1[i]['b_title'] +'</td>';
                          html+='<td>'+ data1[i]['b_slaveTitle'] +'</td>';
                          html+='<td>'+ data1[i]['b_linkUrlList']+'</td>';
                          html+='</tr>';
                      }
                      $("#tab_list").html(html);
                  }
              });
          }
         function getPage(){
              layui.use('laypage', function(){
                 var laypage = layui.laypage;
                  laypage.render({
                     elem: 'pages'
                      ,count: 3 //数据总数,从服务端得到
                      ,limit:1
                      ,jump: function(obj, first){
                          page=obj.curr;  //改变当前页码
                          limit=obj.limit;
                         loadData()
                      }
                  });
              });
          }
      </script>
  
 

后台数据:

控制器代码:

server层代码

server层基类代码,处理分页


      <?php
      namespace app\data\server;
      class BaseServer
      {
         /**
       * 对于分页数据返回处理
       *
       * $param array $info 需要 处理的数据
       * $param int $count 总的数据量
       * $param int $page_size 每页显示的条数
       * @return array
       */
         public function setReturnList($info, $count, $page_size)
          {
             if($page_size == 0){
                 // 总页数
                 $page_count = 1;
              }else{
                 if($count % $page_size == 0){
                     $page_count = $count / $page_size;
                  }else{
                     $page_count = (int)($count / $page_size);
                  }
              }
             return [
                 // 角色数据
                 'data' => $info,
                 // 角色总的数据
                 'total_count' => $count,
                 // 共几页
                 'page_count' => $page_count
              ];
          }
      }
  
 

如果你只想实现功能的话,使用上边的代码十来分钟就实现了,下来我就要开始分析原理了

首先就是前端js代码了,需要做的第一件事就是组装数据

这里是html源码

我们都知道分页做ajax的用户体验很好,所以我们需要组装数据

 这里的代码就不需要解释了,注释写的特别清晰了


      <script type="text/javascript">
         window.onload= function () {
             loadData()  //请求数据
             getPage()     //分页操作
          }
         var page=1; //设置首页页码
         var limit=1;  //设置一页显示的条数
         var total;    //总条数
         function loadData(){
              $.ajax({
                 type:"post",
                 url:"{url(Banner/index)}",//对应controller的URL
                 async:false,
                 dataType: 'json',
                 data:{
                     "page_index":page,
                     "page_size":limit,
                  },
                 success:function(ret){
                      total=ret.total;
                     var data1=ret.data;
                     var html= '';
                     for(var i=0;i<data1.length;i++){
                          html+='<tr>';
                          html+='<td>'+ data1[i].b_id +'</td>';
                          html+='<td>'+ data1[i]['banner_type']['vt_name'] +'</td>';
                          html+='<td>'+ data1[i]['banner_vs_video_name']['vi_title'] +'</td>';
                          html+='<td>'+ data1[i]['b_thumbnailUrl'] +'</td>';
                          html+='<td>'+ data1[i]['b_linkUrl'] +'</td>';
                          html+='<td>'+ data1[i]['b_sort'] +'</td>';
                          html+='<td>'+ data1[i]['b_showType'] +'</td>';
                          html+='<td>'+ data1[i]['b_targetType'] +'</td>';
                          html+='<td>'+ data1[i]['b_title'] +'</td>';
                          html+='<td>'+ data1[i]['b_slaveTitle'] +'</td>';
                          html+='<td>'+ data1[i]['b_linkUrlList']+'</td>';
                          html+='</tr>';
                      }
                      $("#tab_list").html(html);
                  }
              });
          }
         function getPage(){
              layui.use('laypage', function(){
                 var laypage = layui.laypage;
                  laypage.render({
                     elem: 'pages'
                      ,count: 3 //数据总数,从服务端得到
                      ,limit:1
                      ,jump: function(obj, first){
                          page=obj.curr;  //改变当前页码
                          limit=obj.limit;
                         loadData()
                      }
                  });
              });
          }
      </script>
  
 

这个时候就会有一个问题,我们组装的数据放在那,这个时候就需要将原来的数据全部删除掉,所有的数据都使用拼接的数据

直到这里前端的代码就结束了,下来开始后端代码

我们在js里边可以看出,ajax像后端发起请求的时候带了俩个参数,一个是页数,一个是页面显示数据

控制器代码

在控制器里边需要获取这俩个参数,并且传递给bannerServer层处理数据

 在bannerServer里边需要查询banner列表的数据,数据查询是在模型里边操作的,所以还需要去一趟banner模型那里一趟

在bannerModel 里边获取列表的所有数据,这里边有一个关联预加载,这个是根据你们的业务来写的,如果没有其他业务直接获取全部然后page()->select()即可,model层数据处理完之后返回给bannerServer层

又回到bannerServer层

这一次获取了数据的总数

将数据,总数,每页查询的条数传递给baseServer层处理

到了baseServer

这一层主要是对参数做了个判断,当前端发生异常,后端没有正常接收到参数时,给默认参数

最后所有的数据都会返回给控制器

这也就是ajax请求到的数据

文章来源: blog.csdn.net,作者:咔咔-,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/fangkang7/article/details/85070902

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。