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 相关文章推荐
使用无限生命期Session的方法
Oct 09 PHP
mysql 查询指定日期时间内sql语句实现原理与代码
Dec 16 PHP
编写Smarty插件在模板中直接加载数据的详细介绍
Jun 26 PHP
PHP利用REFERER根居访问来地址进行页面跳转
Sep 28 PHP
php后台如何避免用户直接进入方法实例
Oct 15 PHP
C#使用PHP服务端的Web Service通信实例
Apr 08 PHP
Session 失效的原因汇总及解决丢失办法
Sep 30 PHP
判断、添加和删除WordPress置顶文章的相关PHP函数小结
Dec 10 PHP
PHP实现的登录,注册及密码修改功能分析
Nov 25 PHP
PHP实现的服务器一致性hash分布算法示例
Aug 09 PHP
php 将json格式数据转换成数组的方法
Aug 21 PHP
浅谈PHPANALYSIS提取关键字
Mar 08 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调用Java对象的方法
2006/10/09 PHP
php 上一篇,下一篇文章实现代码与原理说明
2010/05/09 PHP
并发下常见的加锁及锁的PHP具体实现代码
2010/10/12 PHP
php+html5基于websocket实现聊天室的方法
2015/07/17 PHP
将PHP程序中返回的JSON格式数据用gzip压缩输出的方法
2016/03/03 PHP
PHP curl批处理及多请求并发实现方法分析
2018/08/15 PHP
php实现的简单多进程服务器类完整示例
2020/02/01 PHP
javascript CSS画图之基础篇
2009/07/29 Javascript
JS数学函数Exp使用说明
2012/08/09 Javascript
关于JS字符串函数String.replace()
2013/04/07 Javascript
Js动态添加复选框Checkbox的实例方法
2013/04/08 Javascript
基于SVG的web页面图形绘制API介绍及编程演示
2013/06/28 Javascript
Jquery实现显示和隐藏的4种简单方式
2013/08/28 Javascript
iframe子页面与父页面在同域或不同域下的js通信
2014/05/07 Javascript
jQuery实现简易的天天爱消除小游戏
2015/10/16 Javascript
js实现商城星星评分的效果
2015/12/29 Javascript
微信小程序(应用号)开发新闻客户端实例
2016/10/24 Javascript
javascript实现去除HTML标签的方法
2016/12/26 Javascript
node.js入门学习之url模块
2017/02/25 Javascript
JavaScript字符串_动力节点Java学院整理
2017/06/27 Javascript
NodeJs操作MongoDB教程之分页功能以及常见问题
2019/04/09 NodeJs
[50:27]OG vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.26
2018/08/30 DOTA
Python Web框架Flask中使用七牛云存储实例
2015/02/08 Python
Python根据区号生成手机号码的方法
2015/07/08 Python
Python只用40行代码编写的计算器实例
2017/05/10 Python
深入理解Python分布式爬虫原理
2017/11/23 Python
几行Python代码爬取3000+上市公司的信息
2019/01/24 Python
使用 Python 处理 JSON 格式的数据
2019/07/22 Python
Macbook安装Python最新版本、GUI开发环境、图像处理、视频处理环境详解
2020/02/17 Python
Ted Baker美国官网:英国时尚品牌
2018/10/29 全球购物
意大利运动服减价商店:ScontoSport
2020/03/10 全球购物
执行力心得体会
2013/12/31 职场文书
高二生物教学反思
2014/01/27 职场文书
手机被没收检讨书
2014/02/22 职场文书
房屋买卖委托书格式范本格式
2014/10/13 职场文书
讲解Python实例练习逆序输出字符串
2022/05/06 Python