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+ajax实现图片文件上传功能实例
Jun 17 PHP
thinkphp模板的包含与渲染实例分析
Nov 26 PHP
PHP Web木马扫描器代码分享
Sep 06 PHP
带你了解PHP7 性能翻倍的关键
Nov 19 PHP
分享五个PHP7性能优化提升技巧
Dec 07 PHP
PHP按指定键值对二维数组进行排序的方法
Dec 22 PHP
Laravel搭建后台登录系统步骤详解
Jul 26 PHP
Thinkphp连表查询及数据导出方法示例
Oct 15 PHP
详解PHP使用Redis存储session时的一个Warning定位
Jul 05 PHP
Yii2语言国际化自动配置详解
Aug 22 PHP
Yii框架实现对数据库的CURD操作示例
Sep 03 PHP
laravel框架 laravel-admin上传图片到oss的方法
Oct 13 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 Mssql操作简单封装支持存储过程
2009/12/11 PHP
使用PHP下载CSS文件中的图片的代码
2013/09/24 PHP
PHP实现将多个文件中的内容合并为新文件的方法示例
2017/06/10 PHP
基于PHP实现微信小程序客服消息功能
2019/08/12 PHP
本地对象Array的原型扩展实现代码
2010/12/04 Javascript
Javascript使用post方法提交数据实例
2015/08/03 Javascript
举例说明如何为JavaScript的方法参数设置默认值
2015/11/17 Javascript
基于jQuery实现点击弹出层实例代码
2016/01/01 Javascript
浏览器复制插件zeroclipboard使用指南
2016/03/26 Javascript
js浏览器html5表单验证
2016/10/17 Javascript
a标签置灰不可点击的实现方法
2017/02/06 Javascript
基于vue2.0实现的级联选择器
2017/06/09 Javascript
JS实现旋转木马轮播图
2020/01/01 Javascript
JS将指定的某个字符全部转换为其他字符实例代码
2020/10/13 Javascript
python+requests+unittest API接口测试实例(详解)
2017/06/10 Python
在java中如何定义一个抽象属性示例详解
2017/08/18 Python
python实现对excel进行数据剔除操作实例
2017/12/07 Python
python获取代理IP的实例分享
2018/05/07 Python
Python发送邮件测试报告操作实例详解
2018/12/08 Python
Python中最大递归深度值的探讨
2019/03/05 Python
python 实现将文件或文件夹用相对路径打包为 tar.gz 文件的方法
2019/06/10 Python
使用Python实现文字转语音并生成wav文件的例子
2019/08/08 Python
Django错误:TypeError at / 'bool' object is not callable解决
2019/08/16 Python
html5+css3气泡组件的实现
2014/11/21 HTML / CSS
详解canvas drawImage()方法绘制图片不显示的问题
2018/10/08 HTML / CSS
SmartBuyGlasses台湾:名牌眼镜,名牌太阳眼镜及隐形眼镜
2017/01/04 全球购物
施工人员岗位职责
2013/12/12 职场文书
考试作弊被抓检讨书
2014/01/10 职场文书
军训感想500字
2014/02/20 职场文书
教师考核评语
2014/04/28 职场文书
环境工程专业自荐信范文
2014/06/24 职场文书
搞笑的获奖感言
2014/08/16 职场文书
质检员岗位职责
2015/02/03 职场文书
防卫过当辩护词
2015/05/21 职场文书
python 实现德洛内三角剖分的操作
2021/04/22 Python
Java实现二分搜索树的示例代码
2022/03/17 Java/Android