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日历[测试通过]
Mar 27 PHP
php设计模式  Command(命令模式)
Jun 17 PHP
php中根据变量的类型 选择echo或dump
Jul 05 PHP
比较discuz和ecshop的截取字符串函数php版
Sep 03 PHP
php 根据url自动生成缩略图并处理高并发问题
Jan 23 PHP
PHP引用(&amp;)各种使用方法实例详解
Mar 20 PHP
PHP实现股票趋势图和柱形图
Feb 07 PHP
PHP Streams(流)详细介绍及使用
May 12 PHP
Zend Framework框架路由机制代码分析
Mar 22 PHP
PHP针对中英文混合字符串长度判断及截取方法示例
Mar 31 PHP
PHP基于pdo的数据库操作类【可支持mysql、sqlserver及oracle】
May 21 PHP
PHP树形结构tree类用法示例
Feb 01 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实现图片简单上传
2006/10/09 PHP
php使用pack处理二进制文件的方法
2014/07/03 PHP
ThinkPHP 3.2 数据分页代码分享
2014/10/14 PHP
使用jQuery实现的网页版的个人简历(可换肤)
2013/04/19 Javascript
jQuery教程 $()包装函数来实现数组元素分页效果
2013/08/13 Javascript
Javascript显示和隐藏ul列表的方法
2015/07/15 Javascript
jquery正则表达式验证(手机号、身份证号、中文名称)
2015/12/31 Javascript
javascript瀑布流式图片懒加载实例
2020/06/28 Javascript
使用jQuery Rotare实现微信大转盘抽奖功能
2016/06/20 Javascript
jQuery插件HighCharts实现的2D对数饼图效果示例【附demo源码下载】
2017/03/09 Javascript
Vue2.0基于vue-cli+webpack Vuex的用法(实例讲解)
2017/09/15 Javascript
详解vue项目的构建,打包,发布全过程
2017/11/23 Javascript
在vue项目中集成graphql(vue-ApolloClient)
2018/09/08 Javascript
AngularJS修改model值时,显示内容不变的实例
2018/09/13 Javascript
JavaScript寄生组合式继承原理与用法分析
2019/01/11 Javascript
如何利用node转发请求详解
2020/09/17 Javascript
python使用nntp读取新闻组内容的方法
2015/05/08 Python
浅析Python中元祖、列表和字典的区别
2016/08/17 Python
python 读取txt,json和hdf5文件的实例
2018/06/05 Python
Python实现的微信红包提醒功能示例
2019/08/22 Python
Python小程序 控制鼠标循环点击代码实例
2019/10/08 Python
Python urllib2运行过程原理解析
2020/06/04 Python
Expedia意大利旅游网站:酒店、机票和租车预订
2017/10/30 全球购物
测绘工程本科生求职信
2013/10/10 职场文书
工程监理应届生求职信
2013/11/09 职场文书
小学教师办公室制度
2014/02/03 职场文书
我为自己代言广告词
2014/03/18 职场文书
詹天佑教学反思
2014/04/30 职场文书
司法建议书范文
2014/05/13 职场文书
2014年幼儿园国庆主题活动方案
2014/09/16 职场文书
2015年数学教师工作总结
2015/05/20 职场文书
红色经典电影观后感
2015/06/18 职场文书
组织委员竞选稿
2015/11/21 职场文书
交通安全教育心得体会
2016/01/15 职场文书
MySQL索引是啥?不懂就问
2021/07/21 MySQL
php实现自动生成验证码的实例讲解
2021/11/17 PHP