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 相关文章推荐
第十三节 对象串行化 [13]
Oct 09 PHP
php利用header函数实现文件下载时直接提示保存
Nov 12 PHP
PHP MVC模式在网站架构中的实现分析
Mar 04 PHP
php去除换行符的方法小结(PHP_EOL变量的使用)
Feb 16 PHP
用Php编写注册后Email激活验证的实例代码
Mar 11 PHP
fetchAll()与mysql_fetch_array()的区别详解
Jun 05 PHP
PHP怎么实现网站保存快捷方式方便用户随时浏览
Aug 15 PHP
PHP实现的英文名字全拼随机排号脚本
Jul 04 PHP
php去除字符串中空字符的常用方法小结
Mar 17 PHP
PHP版QQ互联OAuth示例代码分享
Jul 05 PHP
php微信开发之上传临时素材
Jun 24 PHP
PHP使用curl_multi实现并发请求的方法示例
Apr 29 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
漫荒推荐:画风超赞的国风漫画推荐 超长假期不无聊
2020/03/08 国漫
php 定界符格式引起的错误
2011/05/24 PHP
php遍历目录输出目录及其下的所有文件示例
2014/01/27 PHP
大家在抢红包,程序员在研究红包算法
2015/08/31 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
2018/03/02 PHP
jquery.boxy插件的iframe扩展代码
2010/07/02 Javascript
Js参数值中含有单引号或双引号问题的解决方法
2013/11/06 Javascript
javascript获取和判断浏览器窗口、屏幕、网页的高度、宽度等
2014/05/08 Javascript
javascript中clone对象详解
2014/12/03 Javascript
莱鸟介绍window.print()方法
2016/01/06 Javascript
JS+CSS3制作炫酷的弹窗效果
2016/11/08 Javascript
jQuery实现jQuery-form.js实现异步上传文件
2017/04/28 jQuery
angular4中引入echarts的方法示例
2019/01/29 Javascript
Node.js API详解之 Error模块用法实例分析
2020/05/14 Javascript
js实现全选和全不选
2020/07/28 Javascript
[02:20]DOTA2亚洲邀请赛 EHOME战队出场宣传片
2015/02/07 DOTA
Python多线程编程(八):使用Event实现线程间通信
2015/04/05 Python
Python函数中*args和**kwargs来传递变长参数的用法
2016/01/26 Python
Python中属性和描述符的正确使用
2016/08/23 Python
python编程实现归并排序
2017/04/14 Python
python之从文件读取数据到list的实例讲解
2018/04/19 Python
pytorch 在网络中添加可训练参数,修改预训练权重文件的方法
2019/08/17 Python
python3 下载网络图片代码实例
2019/08/27 Python
如何在mac版pycharm选择python版本
2020/07/21 Python
Python截图并保存的具体实例
2021/01/14 Python
电子工程专业毕业生求职信
2014/03/14 职场文书
团日活动总结
2014/04/28 职场文书
户籍证明格式
2014/09/15 职场文书
房产电话营销开场白
2015/05/29 职场文书
2015年城乡环境综合治理工作总结
2015/07/24 职场文书
高中开学感言
2015/08/01 职场文书
班主任工作经验交流会总结
2015/11/02 职场文书
2016年小学优秀班主任事迹材料
2016/02/29 职场文书
超级实用!五步法则,教你写好年终工作总结
2019/12/05 职场文书
vue如何实现关闭对话框后刷新列表
2022/04/08 Vue.js
Go语言编译原理之源码调试
2022/08/05 Golang