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 10 PHP
通过具体程序来理解PHP里面的抽象类
Jan 28 PHP
php中Smarty模板初体验
Aug 08 PHP
php安全配置 如何配置使其更安全
Dec 16 PHP
PHP中array_map与array_column之间的关系分析
Aug 19 PHP
php获取一个变量的名字的方法
Sep 05 PHP
PHP中如何判断exec函数执行成功?
Aug 04 PHP
Yii2实现多域名跨域同步登录退出
Feb 04 PHP
php使用Jpgraph创建3D饼形图效果示例
Feb 15 PHP
Laravel中Facade的加载过程与原理详解
Sep 22 PHP
thinkphp5实现微信扫码支付
Dec 23 PHP
基于PHP实现解密或加密Cloudflar邮箱保护
Jun 24 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实现利用phpexcel导出数据
2013/08/24 PHP
smarty简单入门实例
2014/11/28 PHP
extjs 学习笔记(三) 最基本的grid
2009/10/15 Javascript
js选取多个或单个元素的实现代码(用class)
2012/08/22 Javascript
深入领悟JavaScript中的面向对象
2013/11/18 Javascript
jQuery获取当前对象标签名称的方法
2014/02/07 Javascript
JS阻止用户多次提交示例代码
2014/03/26 Javascript
js实现的标题栏新消息闪烁提示效果
2014/06/06 Javascript
js实现在同一窗口浏览图片
2014/09/17 Javascript
innerHTML动态添加html代码和脚本兼容多个浏览器
2014/10/11 Javascript
Vue.js路由vue-router使用方法详解
2017/03/20 Javascript
React Native react-navigation 导航使用详解
2017/12/01 Javascript
Jquery $.map使用方法实例详解
2020/09/01 jQuery
vue实现按钮切换图片
2021/01/20 Vue.js
Python检测QQ在线状态的方法
2015/05/09 Python
python结合opencv实现人脸检测与跟踪
2015/06/08 Python
Linux下将Python的Django项目部署到Apache服务器
2015/12/24 Python
Python中进程和线程的区别详解
2017/10/29 Python
python递归函数绘制分形树的方法
2018/06/22 Python
Python解析多帧dicom数据详解
2020/01/13 Python
Python Selenium操作Cookie的实例方法
2021/02/28 Python
HTML5+css3:3D旋转木马效果相册
2017/01/03 HTML / CSS
AmazeUI框架搭建的方法步骤(图文)
2020/08/17 HTML / CSS
美国著名的户外用品品牌:L.L.Bean
2018/01/05 全球购物
Foot Locker英国官网:美国知名运动产品零售商
2019/02/21 全球购物
宝拉珍选英国官网:Paula’s Choice英国
2019/05/29 全球购物
科颜氏香港官方网店:Kiehl’s香港
2021/03/07 全球购物
给老师的道歉信
2014/01/11 职场文书
食品安全工作方案
2014/05/07 职场文书
保研推荐信
2014/05/09 职场文书
小学语文教研活动总结
2014/07/01 职场文书
假期安全教育广播稿
2014/10/04 职场文书
升职自荐信范文
2015/03/27 职场文书
2015年高校教师个人工作总结
2015/05/25 职场文书
舞出我人生观后感
2015/06/16 职场文书
幼儿园小班教师随笔
2015/08/14 职场文书