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 相关文章推荐
在PHP3中实现SESSION的功能(三)
Oct 09 PHP
PHP的分页功能
Mar 21 PHP
php 自写函数代码 获取关键字 去超链接
Feb 08 PHP
用PHP实现递归循环每一个目录
Aug 08 PHP
php.ini中date.timezone设置分析
Jul 29 PHP
php一个找二层目录的小东东
Aug 02 PHP
php实现的一个很好用HTML解析器类可用于采集数据
Sep 23 PHP
详解php中反射的应用
Mar 15 PHP
完美解决phpexcel导出到xls文件出现乱码的问题
Oct 29 PHP
PHP文件管理之实现网盘及压缩包的功能操作
Sep 20 PHP
PHP一个简单的无需刷新爬虫
Jan 05 PHP
PHP addcslashes()函数讲解
Feb 03 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 mysql Errcode: 28 终极解决方法
2009/07/01 PHP
Mysql的Root密码忘记,查看或修改的解决方法(图文介绍)
2013/06/14 PHP
解析PHP函数array_flip()在重复数组元素删除中的作用
2013/06/27 PHP
Java中final关键字详解
2015/08/10 PHP
四个常见html网页乱码问题及解决办法
2015/09/08 PHP
php经典算法集锦
2015/11/14 PHP
PHP实现动态创建XML文档的方法
2018/03/30 PHP
JS date对象的减法处理实现代码
2010/12/28 Javascript
jquery实现隐藏与显示动画效果/输入框字符动态递减/导航按钮切换
2013/07/01 Javascript
jquery使用remove()方法删除指定class子元素
2015/03/26 Javascript
Javascript实现苹果悬浮虚拟按钮
2016/04/10 Javascript
js 截取或者替换字符串中的数字实现方法
2016/06/13 Javascript
详解自动生成博客目录案例
2016/12/09 Javascript
vue、react等单页面项目应该这样子部署到服务器
2018/01/03 Javascript
vuejs选中当前样式active的实例
2018/08/22 Javascript
浅谈vue 单文件探索
2018/09/05 Javascript
微信小程序与后台PHP交互的方法实例分析
2018/12/10 Javascript
javascript中的offsetWidth、clientWidth、innerWidth及相关属性方法
2020/05/14 Javascript
单线程JavaScript实现异步过程详解
2020/05/19 Javascript
[01:48]完美圣典齐天大圣至宝宣传片
2016/12/17 DOTA
Python中的对象,方法,类,实例,函数用法分析
2015/01/15 Python
用Python实现通过哈希算法检测图片重复的教程
2015/04/02 Python
Python实现PS滤镜碎片特效功能示例
2018/01/24 Python
python 查找文件名包含指定字符串的方法
2018/06/05 Python
详解TensorFlow查看ckpt中变量的几种方法
2018/06/19 Python
获取django框架orm query执行的sql语句实现方法分析
2019/06/20 Python
PyQt5重写QComboBox的鼠标点击事件方法
2019/06/25 Python
python 单线程和异步协程工作方式解析
2019/09/28 Python
基于Python爬取51cto博客页面信息过程解析
2020/08/25 Python
五款漂亮的纯CSS3动画按钮的实例教程
2014/11/21 HTML / CSS
中国一家专注拼团的社交购物网站:拼多多
2018/06/13 全球购物
RealTek面试题
2016/06/28 面试题
恒华伟业笔试面试题
2015/02/26 面试题
公开服务承诺制度
2014/03/26 职场文书
请客吃饭开场白
2015/06/01 职场文书
学校2016年九九重阳节活动总结
2016/04/01 职场文书