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 相关文章推荐
用文本文件实现的动态实时发布新闻的程序
Oct 09 PHP
PHP 内存缓存加速功能memcached安装与用法
Sep 03 PHP
php中将时间差转换为字符串提示的实现代码
Aug 08 PHP
PHP设计模式之命令模式的深入解析
Jun 13 PHP
hadoop中一些常用的命令介绍
Jun 19 PHP
PHP的构造方法,析构方法和this关键字详细介绍
Oct 22 PHP
PHP向socket服务器收发数据的方法
Jan 24 PHP
PHP数组操作类实例
Jul 11 PHP
PHP获取某个月最大天数(最后一天)的方法
Jul 29 PHP
Symfony2学习笔记之系统路由详解
Mar 17 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
Apr 09 PHP
php中的依赖注入实例详解
Aug 14 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调用Oracle存储过程的方法
2008/09/12 PHP
PHP运行模式的深入理解
2013/06/03 PHP
PHP中让json_encode不自动转义斜杠“/”的方法
2017/02/28 PHP
PHP实现Session入库/存入redis的方法
2017/05/04 PHP
自己开发Dojo的建议框架
2008/09/24 Javascript
IE6弹出“已终止操作”的解决办法
2010/11/27 Javascript
JS在textarea光标处插入文本的小例子
2013/03/22 Javascript
jQuery Real Person验证码插件防止表单自动提交
2015/11/06 Javascript
JavaScript中对DOM节点的访问、创建、修改、删除
2015/11/16 Javascript
jQuery四种选择器使用及示例
2016/06/05 Javascript
jQuery实现点击表格单元格就可以编辑内容的方法【测试可用】
2016/08/01 Javascript
JS给Array添加是否包含字符串的简单方法
2016/10/29 Javascript
JS插件plupload.js实现多图上传并显示进度条
2016/11/29 Javascript
原生js简单实现放大镜特效
2017/05/16 Javascript
AngularJS监听ng-repeat渲染完成的方法
2018/03/20 Javascript
JavaScript中变量、指针和引用功能与操作示例
2018/08/04 Javascript
node.js微信小程序配置消息推送的实现
2019/02/13 Javascript
JavaScript函数式编程(Functional Programming)组合函数(Composition)用法分析
2019/05/22 Javascript
详细分析Node.js 多进程
2020/06/22 Javascript
[52:20]DOTA2-DPC中国联赛正赛 SAG vs XGBO3 第一场 3月5日
2021/03/11 DOTA
使用Protocol Buffers的C语言拓展提速Python程序的示例
2015/04/16 Python
Python中作用域的深入讲解
2018/12/10 Python
Python基础学习之时间转换函数用法详解
2019/06/18 Python
python kafka 多线程消费者&amp;手动提交实例
2019/12/21 Python
如何打包Python Web项目实现免安装一键启动的方法
2020/05/21 Python
Pycharm生成可执行文件.exe的实现方法
2020/06/02 Python
python自动打开浏览器下载zip并提取内容写入excel
2021/01/04 Python
比较基础的php面试题及答案-编程题
2012/10/14 面试题
Yahoo-PHP面试题2
2014/12/06 面试题
中专生职业生涯规划书范文
2013/12/29 职场文书
舞蹈教师自荐信
2014/01/27 职场文书
服务质量承诺书
2014/03/27 职场文书
应聘英语教师求职信
2014/04/24 职场文书
节约用水标语
2014/06/11 职场文书
科学发展观标语
2014/10/08 职场文书
2016年公共机构节能宣传周活动总结
2016/04/05 职场文书