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脚本的10个技巧(3)
Oct 09 PHP
PHP中for循环语句的几种变型
Nov 26 PHP
php discuz 主题表和回帖表的设计
Mar 13 PHP
在Windows系统上安装PHP运行环境文字教程
Jul 19 PHP
有关phpmailer的详细介绍及使用方法
Jan 28 PHP
解析mysql 表中的碎片产生原因以及清理
Jun 22 PHP
二进制交叉权限微型php类分享
Feb 07 PHP
PHP中执行cmd命令的方法
Oct 11 PHP
Joomla简单判断用户是否登录的方法
May 04 PHP
Yii净化器CHtmlPurifier用法示例(过滤不良代码)
Jul 15 PHP
php的RSA加密解密算法原理与用法分析
Jan 23 PHP
如何在PHP中生成随机数
Jun 04 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循环输出数据库内容的代码
2008/05/24 PHP
PHP判断FORM表单或URL参数来的数据是否为整数的方法
2016/03/25 PHP
详解PHP用substr函数截取字符串中的某部分
2016/12/03 PHP
ThinkPHP实现图片上传操作的方法详解
2017/05/08 PHP
JS input 数字验证代码
2009/07/30 Javascript
Ext.MessageBox工具类简介
2009/12/10 Javascript
JavaScript中数组成员的添加、删除介绍
2014/12/30 Javascript
Bootstrap每天必学之前端开发框架
2015/11/19 Javascript
BootStrap 下拉菜单点击之后不会出现下拉菜单(下拉菜单不弹出)的解决方案
2016/12/14 Javascript
Javascript中常用类型的格式化方法小结
2016/12/26 Javascript
angular-ui-sortable实现可拖拽排序列表
2016/12/28 Javascript
jQuery基于ajax实现页面加载后检查用户登录状态的方法
2017/02/10 Javascript
JS自定义滚动条效果简单实现代码
2020/10/27 Javascript
javascript获取图片的top N主色值方法详解
2018/01/26 Javascript
vue.js给动态绑定的radio列表做批量编辑的方法
2018/02/28 Javascript
jQuery实现的上传图片本地预览效果简单示例
2018/03/29 jQuery
详解ESLint在Vue中的使用小结
2018/10/15 Javascript
JS如何在不同平台实现多语言方式
2020/07/16 Javascript
浅谈django中的认证与登录
2016/10/31 Python
Python实现pdf文档转txt的方法示例
2018/01/19 Python
Python 项目转化为so文件实例
2019/12/23 Python
Pandas 解决dataframe的一列进行向下顺移问题
2019/12/27 Python
使用celery和Django处理异步任务的流程分析
2020/02/19 Python
Python3 ID3决策树判断申请贷款是否成功的实现代码
2020/05/21 Python
使用BeautifulSoup4解析XML的方法小结
2020/12/07 Python
Python实现邮件发送的详细设置方法(遇到问题)
2021/01/18 Python
canvas绘制太极图的实现示例
2020/04/29 HTML / CSS
将世界上最美丽的摄影作品转化为艺术作品:Photos.com
2017/11/28 全球购物
伊莱克斯阿根廷网上商店:Tienda Electrolux
2021/03/08 全球购物
优秀医生事迹材料
2014/02/12 职场文书
犯错检讨书
2014/02/21 职场文书
统计专业自荐书
2014/07/06 职场文书
部门活动策划方案
2014/08/16 职场文书
公司员工宿舍管理制度
2015/08/03 职场文书
谢师宴家长答谢词
2015/09/30 职场文书
同学联谊会邀请函
2019/06/24 职场文书