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 相关文章推荐
第十四节 命名空间 [14]
Oct 09 PHP
PHP中strtotime函数使用方法分享
Jan 10 PHP
Zend Studio 实用快捷键一览表(精心整理)
Aug 10 PHP
PHP程序漏洞产生的原因分析与防范方法说明
Mar 06 PHP
PHP中余数、取余的妙用
Jun 29 PHP
PHP curl使用实例
Jul 02 PHP
PHP+MySql+jQuery实现的&quot;顶&quot;和&quot;踩&quot;投票功能
May 21 PHP
php结合md5的加密解密算法实例
Sep 30 PHP
PHP实现微信模拟登陆并给用户发送消息的方法【文字,图片,图文】
Jun 29 PHP
php实现往pdf中加数字签名操作示例【附源码下载】
Aug 07 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
Apr 04 PHP
php访问对象中的成员的实例方法
Nov 17 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中用foreach来操作数组的代码
2011/07/17 PHP
php提交post数组参数实例分析
2015/12/17 PHP
PHP面向对象五大原则之接口隔离原则(ISP)详解
2018/04/04 PHP
jQuery之过滤元素操作小结
2013/11/30 Javascript
用js正确判断用户名cookie是否存在的方法
2014/01/28 Javascript
JQuery拖动表头边框线调整表格列宽效果代码
2014/09/10 Javascript
js中this用法实例详解
2015/05/05 Javascript
js实现不重复导入的方法
2016/03/02 Javascript
使用jQuery给input标签设置默认值
2016/06/20 Javascript
AngularJS ng-style中使用filter
2016/09/21 Javascript
第一次动手实现bootstrap table分页效果
2016/09/22 Javascript
javascript基本数据类型及类型检测常用方法小结
2016/12/14 Javascript
JavaScript数据结构中栈的应用之表达式求值问题详解
2017/04/11 Javascript
jQuery Validate表单验证插件实现代码
2017/06/08 jQuery
基于Cookie常用操作以及属性介绍
2017/09/07 Javascript
用Node编写RESTful API接口的示例代码
2018/07/04 Javascript
使用Sonarqube扫描Javascript代码的示例
2018/12/26 Javascript
vue实现多级菜单效果
2019/10/19 Javascript
删除目录下相同文件的python代码(逐级优化)
2012/05/25 Python
使用python脚本实现查询火车票工具
2018/07/19 Python
python try except 捕获所有异常的实例
2018/10/18 Python
Python3.5面向对象程序设计之类的继承和多态详解
2019/04/24 Python
Python中顺序表原理与实现方法详解
2019/12/03 Python
使用Django和Postgres进行全文搜索的实例代码
2020/02/13 Python
Python xlwings插入Excel图片的实现方法
2021/02/26 Python
AVI-8手表美国官方商店:AVI-8 USA
2019/04/10 全球购物
super关键字的用法
2012/04/10 面试题
护理学毕业生求职信
2013/11/14 职场文书
国际语言毕业生求职信
2014/07/08 职场文书
股权转让协议范本
2014/12/07 职场文书
医院科室评语
2015/01/04 职场文书
销售员岗位职责范本
2015/04/11 职场文书
2015年母亲节活动策划方案
2015/05/04 职场文书
重阳节座谈会主持词
2015/07/03 职场文书
2015年物业管理员工工作总结
2015/10/15 职场文书
muduo TcpServer模块源码分析
2022/04/26 Redis