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 相关文章推荐
Gregarius中文日期格式问题解决办法
Apr 22 PHP
使用PHP实现二分查找算法代码分享
Jun 24 PHP
php dirname(__FILE__) 获取当前文件的绝对路径
Jun 28 PHP
php获取本地图片文件并生成xml文件输出具体思路
Apr 27 PHP
关于PHP内存溢出问题的解决方法
Jun 25 PHP
怎么在Windows系统中搭建php环境
Aug 31 PHP
php获取文件内容最后一行示例
Jan 09 PHP
linux下使用crontab实现定时PHP计划任务失败的原因分析
Jul 05 PHP
ThinkPHP添加更新标签的方法
Dec 05 PHP
Zend Framework教程之请求对象的封装Zend_Controller_Request实例详解
Mar 07 PHP
PHP微信PC二维码登陆的实现思路
Jul 13 PHP
PHP Socket网络操作类定义与用法示例
Aug 30 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
PL-880隐藏功能
2021/03/01 无线电
PHP调用三种数据库的方法(2)
2006/10/09 PHP
解析使用ThinkPHP应该掌握的调试手段
2013/06/20 PHP
php解析json数据实例
2014/08/19 PHP
PHP 芝麻信用接入的注意事项
2016/12/01 PHP
NodeJS 模块开发及发布详解分享
2012/03/07 NodeJs
js获得指定控件输入光标的坐标兼容IE,Chrome,火狐等多种主流浏览器
2013/05/21 Javascript
Jquery原生态实现表格header头随滚动条滚动而滚动
2014/03/18 Javascript
浅谈下拉菜单中的Option对象
2015/05/10 Javascript
js实现卡片式项目管理界面UI设计效果
2015/12/08 Javascript
Javascript Event(事件)的传播与冒泡
2017/01/23 Javascript
详解JavaScript对象的深浅复制
2017/03/30 Javascript
JS实现仿饿了么在浏览器标签页失去焦点时网页Title改变
2017/06/01 Javascript
原生JS发送异步数据请求
2017/06/08 Javascript
nodejs密码加密中生成随机数的实例代码
2017/07/17 NodeJs
bootstrap里bootstrap动态加载下拉框的实例讲解
2018/08/10 Javascript
基于JavaScript实现控制下拉列表
2020/05/08 Javascript
Node.js path模块,获取文件后缀名操作
2020/11/07 Javascript
Python中模拟enum枚举类型的5种方法分享
2014/11/22 Python
python数字图像处理之高级滤波代码详解
2017/11/23 Python
python实现杨氏矩阵查找
2019/03/02 Python
python3.7 sys模块的具体使用
2019/07/22 Python
Python中最好用的命令行参数解析工具(argparse)
2019/08/23 Python
Django ModelForm操作及验证方式
2020/03/30 Python
如何卸载python插件
2020/07/08 Python
俄罗斯街头服装品牌:Black Star Wear
2017/03/01 全球购物
英国最大的滑板品牌选择:Route One
2019/09/22 全球购物
制衣厂各岗位职责
2013/12/02 职场文书
《列夫托尔斯泰》教学反思
2014/02/10 职场文书
积极贯彻学习两会精神总结
2014/03/17 职场文书
二手房买卖协议书
2014/04/10 职场文书
《回乡偶书》教学反思
2014/04/12 职场文书
学生会竞选演讲稿
2014/04/24 职场文书
公司委托书格式范本
2014/09/16 职场文书
优秀党员推荐材料
2014/12/18 职场文书
MySQL系列之九 mysql查询缓存及索引
2021/07/02 MySQL