ThinkPHP5.1+Ajax实现的无刷新分页功能示例


Posted in PHP onFebruary 10, 2020

本文实例讲述了ThinkPHP5.1+Ajax实现的无刷新分页功能。分享给大家供大家参考,具体如下:

无刷新分页可以减轻服务器负担,利用Ajax技术,请求部分信息,提高网站访问速度,是网站建设的必备技术。

需要在后台展示自定义属性列表(lst.html),其中的列表部分摘出来,放到(paginate1.html)中:

<div class="row">
  <div class="col-sm-12">
    <div class="ibox float-e-margins">
      <div class="ibox-content">
          <table class="table table-bordered">
            <thead>
              <tr>
                <th>ID</th>
                <th>名称</th>
                <th>取值</th>
                <th>显示</th>
                <th>排序</th>
                <th>操作</th>
              </tr>
            </thead>
            <tbody>
              {volist name="self" id="vo"}
              <tr>
                <td>{$vo.id}</td>
                <td>{$vo.name}</td>
                <td>{$vo.value}</td>
                <td>
                  {if $vo.isshow==1}
                  <button type="button" class="btn btn-success btn-sm">是</button>
                  {else/}
                  <button type="button" class="btn btn-danger btn-sm">否</button>
                  {/if}
                </td>
                <td><input type="text" value="{$vo.order}" name=""></td>
                <td>
                  <div class="btn-group open">
                    <button data-toggle="dropdown" class="btn btn-primary dropdown-toggle" aria-expanded="true">操作 <span class="caret"></span>
                    </button>
                    <ul class="dropdown-menu">
                      <li><a href="">修改</a>
                      </li>
                      <li><a href="">删除</a>
                      </li>
                    </ul>
                  </div>
                </td>
              </tr>
              {/volist}
            </tbody>
          </table>
        {$self|raw}
        <div class="row">
          <div class="col-sm-2">
            <button class="btn btn-success" type="button" id="changeOrder">
              <i class="fa fa-plus-square"></i>  
              <span class="bold">排序</span>
            </button>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>

其中self是服务器端传递过来的自定义属性,并进行了分页操作:

$selfattribute_select = db("selfattribute")->paginate(5);
$this->assign("self",$selfattribute_select);

因为lst.html把列表摘了出来,所以还要在引入回去,才能使页面完整,同时,为了方便进行jquery操作,把列表用带id的div包裹起来:

<div id="paginate">
    {include file="selfattribute/paginate1"}
</div>

ThinkPHP5.1带的分页类使用的是BootStrap样式,它在页面显示时实际会有一个pagination的类,查看源代码如下:

<ul class="pagination">
  <li class="disabled">
    <span>«</span></li>
  <li class="active">
    <span>1</span></li>
  <li>
    <a href="/xkershouche/public/admin/selfattribute/lst.html?page=2" rel="external nofollow" rel="external nofollow" >2</a></li>
  <li>
    <a href="/xkershouche/public/admin/selfattribute/lst.html?page=3" rel="external nofollow" >3</a></li>
  <li>
    <a href="/xkershouche/public/admin/selfattribute/lst.html?page=4" rel="external nofollow" >4</a></li>
  <li>
    <a href="/xkershouche/public/admin/selfattribute/lst.html?page=5" rel="external nofollow" >5</a></li>
  <li>
    <a href="/xkershouche/public/admin/selfattribute/lst.html?page=6" rel="external nofollow" >6</a></li>
  <li>
    <a href="/xkershouche/public/admin/selfattribute/lst.html?page=2" rel="external nofollow" rel="external nofollow" >»</a></li>
</ul>

这就是好多人搞不懂的pagination是怎么来的。

然后开始写js代码,因为我们的分页按钮也在被请求的页面当中,属于“未来”的元素,所以这里我们要用on方法,这个方法是jquery1.7以后的方法,注意自己的jquery版本。

<script type="text/javascript">
  $(document).on('click', '.pagination a', function(event) {
    var url = $(this).attr('href');
    $.ajax({
      url: url,
      type: 'get',
    })
    .done(function(data) {
      $("#paginate").html(data);
    })
    return false;
  });
  </script>

其中.done()方法和success方法是一样的,return false是为了阻止默认事件,防止直接跳转。

那么服务器端就可以根据情况渲染模板了,代码如下:

public function lst()
  {
    $selfattribute_select = db("selfattribute")->paginate(5);
    $this->assign("self",$selfattribute_select);
    if (request()->isAjax()) {
      return view("paginate1");
    } else {
      return view();
    }
  }

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP如何透过ODBC来存取数据库
Oct 09 PHP
PHP项目开发中最常用的自定义函数整理
Dec 02 PHP
php中生成随机密码的自定义函数代码
Oct 21 PHP
php检测iis环境是否支持htaccess的方法
Feb 18 PHP
ThinkPHP实例化模型的四种方法概述
Aug 22 PHP
php常用字符串比较函数实例汇总
Nov 24 PHP
PHP多线程编程之管道通信实例分析
Mar 07 PHP
简单介绍PHP非阻塞模式
Mar 03 PHP
PHP实现的观察者模式实例
Jun 21 PHP
PHP判断json格式是否正确的实现代码
Sep 20 PHP
PHP大文件切割上传功能实例分析
Jul 01 PHP
php 多继承的几种常见实现方法示例
Nov 18 PHP
ThinkPHP5&amp;5.1实现验证码的生成、使用及点击刷新功能示例
Feb 07 #PHP
Thinkphp框架+Layui实现图片/文件上传功能分析
Feb 07 #PHP
PHP查找一列有序数组是否包含某值的方法
Feb 07 #PHP
php测试kafka项目示例
Feb 06 #PHP
PHP图像处理 imagestring添加图片水印与文字水印操作示例
Feb 06 #PHP
PHP实现常用排序算法的方法
Feb 05 #PHP
PHP ElasticSearch做搜索实例讲解
Feb 05 #PHP
You might like
PHP+shell脚本操作Memcached和Apache Status的实例分享
2016/03/11 PHP
Thinkphp5行为使用方法汇总
2017/12/21 PHP
PHP排序算法之堆排序(Heap Sort)实例详解
2018/04/21 PHP
Referer原理与图片防盗链实现方法详解
2019/07/03 PHP
js实现的网站首页随机公告随机公告
2007/03/14 Javascript
一个简单的Node.js异步操作管理器分享
2014/04/29 Javascript
jquery实现仿新浪微博带动画效果弹出层代码(可关闭、可拖动)
2015/10/12 Javascript
jQuery中delegate()方法的用法详解
2016/10/13 Javascript
node.js版本管理工具n无效的原理和解决方法
2016/11/24 Javascript
vue2.0父子组件间通信的实现方法
2017/04/19 Javascript
微信小程序点击控件修改样式实例详解
2017/07/07 Javascript
详解JS数组Reduce()方法详解及高级技巧
2017/08/18 Javascript
Vue中正确使用jQuery的方法
2017/10/30 jQuery
jquery 遍历hash操作示例【基于ajax交互】
2019/10/12 jQuery
vue 实现移动端键盘搜索事件监听
2019/11/06 Javascript
微信小程序 wx:for 与 wx:for-items 与 wx:key的正确用法
2020/05/19 Javascript
[39:18]完美世界DOTA2联赛PWL S3 Forest vs LBZS 第二场 12.17
2020/12/19 DOTA
跟老齐学Python之玩转字符串(2)
2014/09/14 Python
如何准确判断请求是搜索引擎爬虫(蜘蛛)发出的请求
2015/10/13 Python
python 连接各类主流数据库的实例代码
2018/01/30 Python
matplotlib 输出保存指定尺寸的图片方法
2018/05/24 Python
python验证码识别教程之利用投影法、连通域法分割图片
2018/06/04 Python
详解Django中间件执行顺序
2018/07/16 Python
python hashlib加密实现代码
2019/10/17 Python
python图形开发GUI库pyqt5的基本使用方法详解
2020/02/14 Python
Python填充任意颜色,不同算法时间差异分析说明
2020/05/16 Python
CSS中的字体大小设置属性总结
2016/05/24 HTML / CSS
eDreams德国:南欧领先的在线旅游公司
2020/12/07 全球购物
绘画设计学生的个人自我评价
2013/09/20 职场文书
网络教育自我鉴定
2014/02/04 职场文书
yy生日主持词
2014/03/20 职场文书
公务员学习习总书记“三严三实”思想汇报
2014/09/19 职场文书
2014统计局民主生活会对照检查材料思想汇报
2014/10/02 职场文书
2014年平安夜寄语
2014/12/08 职场文书
先进工作者申报材料
2014/12/23 职场文书
MySQL复制问题的三个参数分析
2021/04/07 MySQL