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 相关文章推荐
AMFPHP php远程调用(RPC, Remote Procedure Call)工具 快速入门教程
May 10 PHP
PHP JSON格式数据交互实例代码详解
Jan 13 PHP
PHP中将数组转成XML格式的实现代码
Aug 08 PHP
免费的ip数据库淘宝IP地址库简介和PHP调用实例
Apr 08 PHP
Windows下安装PHP单元测试环境PHPUnit图文教程
Oct 24 PHP
Laravel 5 学习笔记
Mar 06 PHP
PHP使用flock实现文件加锁的方法
Jul 01 PHP
PHP调用存储过程返回值不一致问题的解决方法分析
Apr 26 PHP
CI框架AR操作(数组形式)实现插入多条sql数据的方法
May 18 PHP
PHP创建单例后台进程的方法示例
May 23 PHP
PHP使用preg_split和explode分割textarea存放内容的方法分析
Jul 03 PHP
PHP Laravel中的Trait使用方法
Jan 20 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判断文章里是否有图片的简单方法
2014/07/26 PHP
PHP数组排序之sort、asort与ksort用法实例
2014/09/08 PHP
php实现基于微信公众平台开发SDK(demo)扩展的方法
2014/12/22 PHP
PHP观察者模式原理与简单实现方法示例
2017/08/25 PHP
javascript 检测浏览器类型和版本的代码
2009/09/15 Javascript
jQuery 幻灯片插件(带缩略图功能)
2011/01/24 Javascript
javaScript 页面自动加载事件详解
2014/02/10 Javascript
vue项目中做编辑功能传递数据时遇到问题的解决方法
2016/12/19 Javascript
VUE饿了么树形控件添加增删改功能的示例代码
2017/10/17 Javascript
vue-router3.0版本中 router.push 不能刷新页面的问题
2018/05/10 Javascript
原生JavaScript之es6中Class的用法分析
2020/02/23 Javascript
JS实现放大镜效果
2020/09/21 Javascript
[02:02]DOTA2英雄基础教程 斯拉达
2013/12/11 DOTA
[05:26]2014DOTA2西雅图国际邀请赛 iG战队巡礼
2014/07/07 DOTA
Python中音频处理库pydub的使用教程
2017/06/07 Python
Django rest framework实现分页的示例
2018/05/24 Python
python验证码识别教程之灰度处理、二值化、降噪与tesserocr识别
2018/06/04 Python
查看TensorFlow checkpoint文件中的变量名和对应值方法
2018/06/14 Python
Python找出微信上删除你好友的人脚本写法
2018/11/01 Python
numpy向空的二维数组中添加元素的方法
2018/11/01 Python
用Python读取几十万行文本数据
2018/12/24 Python
Python根据当前日期取去年同星期日期
2019/04/14 Python
python使用MQTT给硬件传输图片的实现方法
2019/05/05 Python
pytorch实现onehot编码转为普通label标签
2020/01/02 Python
tensorflow tf.train.batch之数据批量读取方式
2020/01/20 Python
新手学习Python2和Python3中print不同的用法
2020/06/09 Python
利用css3画个同心圆示例代码
2017/07/03 HTML / CSS
Calzedonia美国官网:意大利风格袜子、打底裤和沙滩装
2018/07/19 全球购物
教师爱岗敬业演讲稿
2014/05/05 职场文书
主题党日活动总结
2014/07/08 职场文书
关于保护环境的建议书
2014/08/26 职场文书
2015新学期开学寄语
2015/02/26 职场文书
2015年反腐倡廉工作总结
2015/05/14 职场文书
2016清明节森林防火广播稿
2015/12/17 职场文书
python 爬取华为应用市场评论
2021/05/29 Python
CentOS8.4安装Redis6.2.6的详细过程
2021/11/20 Redis