tp5框架无刷新分页实现方法分析

吾爱主题 阅读:125 2021-08-21 17:31:00 评论:0

本文实例讲述了tp5框架无刷新分页实现方法。分享给大家供大家参考,具体如下:

已tp5 分页为例,

1.默认生成的分页 页码如下:

?
1 2 3 4 5 6 < ul class = "pagination" > < li >< a href = "?page=1" rel = "external nofollow" rel = "external nofollow" >&laquo;</ a ></ li > < li >< a href = "?page=1" rel = "external nofollow" rel = "external nofollow" >1</ a ></ li > < li class = "active" >< span >2</ span ></ li > < li class = "disabled" >< span >&raquo;</ span ></ li > </ ul >

2.点击页码  值,跳转到对应的页面,并get传 page='1' or '2';

所以无刷新需要做到两点,阻止页码 a链接跳转 和 传值【post 和 get都可以】,ajax传值到后端控制器时,接收并存入$page即可,一定要存入$page,不能是其他变量名(因为框架封装的类里面获取当前页就是从$page中获取的!)

具体做法是:

1.进入首页面(带分页的页面),用js或jQuery 给页码a标签阻止跳转;

?
1 $( '#pag ul li a' ).attr( "href" , 'javascript:void(0);' );

2.给各页码元素绑定点击事件,所做的逻辑就是当页码被点击时,计算或获取到要跳转的页面值。

3.确定了要跳转的页面值后,然后ajax传值到后端(传递的就是page ,post  get方式都可以)。

4.后端控制器获取到传值,并存入$page ,其他分页的逻辑按照正常做法查询即可,只是查询出来的数据需要组装成字符串返回去。(返回去的还需要有页码字符串,每一次无刷新的页码字符串都不同,每切换一个页面,需要重新再和数据更换一次)

4.1为什么定义为$page?  请去框架tp5   thinkphp/think/db/Query.php 找到paginate方法,入下位置(1333-1338行):

?
1 2 3 4 5 $page = isset( $config [ 'page' ]) ? (int) $config [ 'page' ] : call_user_func([    $class ,    'getCurrentPage' , ], $config [ 'var_page' ]); $page = $page < 1 ? 1 : $page ;

5.返回的数据通过jquery填入页面里,并删除之前的数据元素!

2-5  jquery代码如下:

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 $( function (){    //去掉分页的点击跳转    del_jump();    //当分页被点击时,进行无刷新分页    $( "#pag" ).on( 'click' , 'ul li a' , function (){     //当前被点击的页码数 或者 箭头     dianji = $( this ).html();     current_page = $( '.active span' ).html();     page = '' ;     if (dianji == "«" ) {      current_page = Number(current_page);      page = String(current_page-1);     } else if (dianji == "»" ) {      current_page = Number(current_page);      page = String(current_page+1);     } else {      page = dianji;     }     //发送ajax到后台     $.post( "{:url('Virtual/index')}" ,      { 'page' :page},      function (data){       //将返回的数据添加到页面上去       $( '#record_list' ).html(data.html);       $( '#pag' ).html(data.pages);       del_jump();      }, 'json' );    });    //去掉分页的点击跳转    function del_jump() {      $( '#pag ul li a' ).attr( "href" , 'javascript:void(0);' );    } });

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

原文链接:https://blog.csdn.net/leo_jk/article/details/79260418

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

【腾讯云】云服务器产品特惠热卖中
搜索
标签列表
    关注我们

    了解等多精彩内容