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扩展vld查看PHP opcode操作步骤
Mar 04 PHP
php的数组与字符串的转换函数整理汇总
Jul 18 PHP
php静态文件返回304技巧分享
Jan 06 PHP
PHP使用Face++接口开发微信公众平台人脸识别系统的方法
Apr 17 PHP
yii分页组件用法实例分析
Dec 28 PHP
php模板引擎技术简单实现
Mar 15 PHP
CentOS 7.2 下编译安装PHP7.0.10+MySQL5.7.14+Nginx1.10.1的方法详解(mini版本)
Sep 01 PHP
详解PHP数据压缩、加解密(pack, unpack)
Dec 17 PHP
根据key删除数组中指定的元素实现方法
Mar 02 PHP
Laravel框架定时任务2种实现方式示例
Dec 08 PHP
Laravel实现搜索的时候分页并携带参数
Oct 15 PHP
在phpstudy集成环境下的nginx服务器下配置url重写
Dec 02 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
老机欣赏|中国60年代精品收音机
2021/03/02 无线电
smtp邮件发送一例
2006/10/09 PHP
第4章 数据处理-php正则表达式-郑阿奇(续)
2011/07/04 PHP
用PHP实现 上一篇、下一篇的代码
2012/09/29 PHP
PHP实现数组根据某个字段进行水平合并,横向合并案例分析
2019/10/08 PHP
JS运行耗时操作的延时显示方法
2010/11/19 Javascript
jquery异步调用页面后台方法&amp;#8207;(asp.net)
2011/03/01 Javascript
基于jquery的15款幻灯片插件
2011/04/10 Javascript
JS小游戏之仙剑翻牌源码详解
2014/09/25 Javascript
jqGrid 学习笔记整理——进阶篇(一 )
2016/04/17 Javascript
js实现页面a向页面b传参的方法
2016/05/29 Javascript
初识简单却不失优雅的Vue.js
2016/09/12 Javascript
js输入框使用正则表达式校验输入内容的实例
2017/02/12 Javascript
Angular.js自定义指令学习笔记实例
2017/02/24 Javascript
老生常谈js中的MVC
2017/07/25 Javascript
薪资那么高的Web前端必看书单
2017/10/13 Javascript
AngularJS表单验证功能
2017/10/19 Javascript
jQuery实现动态添加和删除input框实例代码
2019/03/26 jQuery
微信小程序的引导页实现代码
2020/06/24 Javascript
详解Python操作RabbitMQ服务器消息队列的远程结果返回
2016/06/30 Python
详解常用查找数据结构及算法(Python实现)
2016/12/09 Python
基于sklearn实现Bagging算法(python)
2019/07/11 Python
python issubclass 和 isinstance函数
2019/07/25 Python
django 通过URL访问上传的文件方法
2019/07/28 Python
python获取Pandas列名的几种方法
2019/08/07 Python
TensorFlow dataset.shuffle、batch、repeat的使用详解
2020/01/21 Python
使用 pytorch 创建神经网络拟合sin函数的实现
2020/02/24 Python
keras实现调用自己训练的模型,并去掉全连接层
2020/06/09 Python
HTML5实现WebSocket协议原理浅析
2014/07/07 HTML / CSS
西班牙香水和化妆品连锁店:Druni
2019/05/05 全球购物
波兰汽车配件网上商店:iParts.pl
2020/09/08 全球购物
雅虎笔试题(字符串操作)
2015/03/24 面试题
青年文明号服务承诺
2014/03/31 职场文书
2014年秋季新学期寄语
2014/08/02 职场文书
2015年人民调解工作总结
2015/05/18 职场文书
搭建zabbix监控以及邮件报警的超级详细教学
2022/07/15 Servers