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仿ZOL分页类代码
Oct 02 PHP
PHP 实现explort() 功能的详解
Jun 20 PHP
PHP实现单例模式最安全的做法
Jun 13 PHP
PHP中的reflection反射机制测试例子
Aug 05 PHP
php计算年龄精准到年月日
Nov 17 PHP
YiiFramework入门知识点总结(图文教程)
Dec 28 PHP
学习PHP的数组总结【经验】
May 05 PHP
PHP实现的简单分页类及用法示例
May 06 PHP
基于PHP微信红包的算法探讨
Jul 21 PHP
PHP利用超级全局变量$_GET来接收表单数据的实例
Nov 05 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
Sep 20 PHP
基于ThinkPHP删除目录及目录文件函数
Oct 28 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上传文件,创建递归目录的实例代码
2013/10/18 PHP
利用php下载xls文件(自己动手写的)
2014/04/18 PHP
html静态页面调用php文件的方法
2014/11/13 PHP
PHP中JSON的应用技巧
2015/10/10 PHP
url地址自动加#号问题说明
2010/08/21 Javascript
JS阻止用户多次提交示例代码
2014/03/26 Javascript
JavaScript日期类型的一些用法介绍
2015/03/02 Javascript
JS实现网页上随机产生超链接地址的方法
2015/11/09 Javascript
jQuery获取radio选中项的值实例
2016/06/18 Javascript
原生js仿jquery animate动画效果
2016/07/13 Javascript
Node.js用readline模块实现输入输出
2016/12/16 Javascript
js 轮播效果实例分享
2016/12/28 Javascript
基于jQuery实现滚动刷新效果
2017/01/09 Javascript
基于JQuery及AJAX实现名人名言随机生成器
2017/02/10 Javascript
深入理解vue.js中$watch的oldvalue与newValue
2017/08/07 Javascript
vue和better-scroll实现列表左右联动效果详解
2019/04/29 Javascript
layui 实现table翻页滚动条位置保持不变的例子
2019/09/05 Javascript
layui写后台表格思路和赋值用法详解
2019/11/14 Javascript
node crawler如何添加promise支持
2020/02/01 Javascript
解决vue cli4升级sass-loader(v8)后报错问题
2020/07/30 Javascript
python中getaddrinfo()基本用法实例分析
2015/06/28 Python
python实现公司年会抽奖程序
2019/01/22 Python
HTML5 实现一个访问本地文件的实例
2012/12/13 HTML / CSS
美国孕妇装品牌:Destination Maternity
2018/02/04 全球购物
lookfantastic荷兰:在线购买奢华护肤、护发和化妆品
2018/11/27 全球购物
几个Linux面试题笔试题
2016/08/01 面试题
Linux文件操作命令都有哪些
2015/02/27 面试题
物业管理毕业生个人的求职信
2013/11/30 职场文书
计算机实训报告范文
2014/11/05 职场文书
三峡导游词
2015/01/31 职场文书
2016教师节问候语
2015/11/10 职场文书
《桂花雨》教学反思
2016/02/19 职场文书
党员公开承诺书(2016最新版)
2016/03/24 职场文书
详解JAVA中的OPTIONAL
2021/06/14 Java/Android
mysql函数全面总结
2021/11/11 MySQL
CentOS MySql8 远程连接实战
2022/04/19 MySQL