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


Posted in PHP onSeptember 26, 2019

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

已tp5 分页为例,

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

<ul class="pagination">
<li><a href="?page=1" rel="external nofollow" rel="external nofollow" >«</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>»</span></li>
</ul>

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

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

具体做法是:

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

$('#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行):

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

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

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

2-5  jquery代码如下:

$(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程序设计有所帮助。

PHP 相关文章推荐
开发大型 PHP 项目的方法
Jan 02 PHP
PHP中的float类型使用说明
Jul 27 PHP
php中常用字符串处理代码片段整理
Nov 07 PHP
php循环语句 for()与foreach()用法区别介绍
Sep 05 PHP
php开发时容易忘记的一些技术细节
Feb 03 PHP
PHP文件缓存smarty模板应用实例分析
Feb 26 PHP
PHP查询大量数据内存耗尽问题的解决方法
Oct 28 PHP
phpstudy的php版本自由修改的方法
Oct 18 PHP
PHP+Ajax实现的博客文章添加类别功能示例
Mar 29 PHP
PHPExcel 修改已存在Excel的方法
May 03 PHP
PHP里的$_GET数组介绍
Mar 22 PHP
基于ThinkPHP5框架使用QueryList爬取并存入mysql数据库操作示例
May 25 PHP
php判断目录存在的简单方法
Sep 26 #PHP
php 策略模式原理与应用深入理解
Sep 25 #PHP
php策略模式简单示例分析【区别于工厂模式】
Sep 25 #PHP
PHP 观察者模式深入理解与应用分析
Sep 25 #PHP
php模式设计之观察者模式应用实例分析
Sep 25 #PHP
php创建类并调用的实例方法
Sep 25 #PHP
关于php开启错误提示的总结
Sep 24 #PHP
You might like
php扩展ZF――Validate扩展
2008/01/10 PHP
php 批量替换html标签的实例代码
2013/11/26 PHP
php使用mkdir创建多级目录入门例子
2014/05/10 PHP
php备份数据库类分享
2015/04/14 PHP
php 类自动载入的方法
2015/06/03 PHP
如何使用微信公众平台开发模式实现多客服
2016/01/06 PHP
thinkPHP5框架auth权限控制类与用法示例
2018/06/12 PHP
JS去除字符串的空格增强版(可以去除中间的空格)
2009/08/26 Javascript
js的正则test,match,exec详细解析
2014/01/29 Javascript
微信小程序本地缓存数据增删改查实例详解
2017/05/24 Javascript
微信小程序实现MUI数字输入框效果
2018/01/31 Javascript
浅谈vue同一页面中拥有两个表单时,的验证问题
2018/09/18 Javascript
在 Vue-CLI 中引入 simple-mock实现简易的 API Mock 接口数据模拟
2018/11/28 Javascript
关于JSON解析的实现过程解析
2019/10/08 Javascript
jQuery操作元素的内容和样式完整实例分析
2020/01/10 jQuery
如何基于filter实现网站整体变灰功能
2020/04/17 Javascript
jQuery实现移动端下拉展现新的内容回弹动画
2020/06/24 jQuery
Vue向后台传数组数据,springboot接收vue传的数组数据实例
2020/11/12 Javascript
python中关于时间和日期函数的常用计算总结(time和datatime)
2013/03/08 Python
使用paramiko远程执行命令、下发文件的实例
2017/10/01 Python
Python中文件的读取和写入操作
2018/04/27 Python
Python采集代理ip并判断是否可用和定时更新的方法
2018/05/07 Python
python 协程中的迭代器,生成器原理及应用实例详解
2019/10/28 Python
Python 生成短8位唯一id实战教程
2021/01/13 Python
专门经营化妆刷的美国彩妆品牌:Sigma Beauty
2017/09/11 全球购物
美国五金商店:Ace Hardware
2018/03/27 全球购物
英国最好的包装供应商:Priory Direct
2019/12/17 全球购物
工作自我评价分享
2013/12/01 职场文书
巧克力蛋糕店创业计划书
2014/01/14 职场文书
小学生元旦广播稿
2014/02/21 职场文书
聚美优品陈欧广告词
2014/03/14 职场文书
《李时珍夜宿古寺》教学反思
2014/04/09 职场文书
暑假安全保证书
2015/02/28 职场文书
PostgreSQL通过oracle_fdw访问Oracle数据的实现步骤
2021/05/21 PostgreSQL
MySQL分库分表详情
2021/09/25 MySQL
vue实现可以快进后退的跑马灯组件
2022/04/08 Vue.js