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 相关文章推荐
Windows IIS PHP 5.2 安装与配置方法
Jun 08 PHP
PHP游戏编程25个脚本代码
Feb 08 PHP
自己在做项目过程中学到的PHP知识收集
Aug 20 PHP
PHP迭代器的内部执行过程详解
Nov 12 PHP
显示youtube视频缩略图和Vimeo视频缩略图代码分享
Feb 13 PHP
php使用GD创建保持宽高比缩略图的方法
Apr 17 PHP
PHP session会话操作技巧小结
Sep 27 PHP
PHP addslashes()函数讲解
Feb 03 PHP
PHP7内核之Reference详解
Mar 14 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
Feb 22 PHP
PHP7原生MySQL数据库操作实现代码
Jul 03 PHP
php优化查询foreach代码实例讲解
Mar 24 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 fsockopen写的HTTP下载的类
2007/02/22 PHP
解析curl提交GET,POST,Cookie的简单方法
2013/06/29 PHP
PHP实现将科学计数法转换为原始数字字符串的方法
2014/12/16 PHP
PHP正则表达式笔记与实例详解
2019/05/09 PHP
Thinkphp 在api开发中异常返回依然是html的解决方式
2019/10/16 PHP
Javascript 获取链接(url)参数的方法
2009/02/15 Javascript
基于jquery的禁用右键、文本选择功能、复制按键的实现代码
2013/08/27 Javascript
回车直接实现点击某按钮的效果即触发单击事件
2014/02/27 Javascript
JavaScript将当前时间转换成UTC标准时间的方法
2015/04/06 Javascript
jQuery检测滚动条是否到达底部
2015/12/15 Javascript
jQuery定义插件的方法
2015/12/18 Javascript
jQuery实现的指纹扫描效果实例(附演示与demo源码下载)
2016/01/26 Javascript
BootStrap中的表单大全
2016/09/07 Javascript
javascript history对象详解
2017/02/09 Javascript
基于Vue渲染与插件的加载顺序的问题详解
2018/03/05 Javascript
vue裁切预览组件功能的实现步骤
2018/05/04 Javascript
使用Vue父子组件通信实现todolist的功能示例代码
2019/04/11 Javascript
JS实现的自定义map方法示例
2019/05/17 Javascript
详解element-ui中表单验证的三种方式
2019/09/18 Javascript
Python os模块中的isfile()和isdir()函数均返回false问题解决方法
2015/02/04 Python
Django中模版的子目录与include标签的使用方法
2015/07/16 Python
Python中用字符串调用函数或方法示例代码
2017/08/04 Python
python 3.6 tkinter+urllib+json实现火车车次信息查询功能
2017/12/20 Python
pandas修改DataFrame列名的方法
2018/04/08 Python
python yield和Generator函数用法详解
2020/02/10 Python
Python如何截图保存的三种方法(小结)
2020/09/01 Python
Django如何重置migration的几种情景
2021/02/24 Python
pandas apply使用多列计算生成新的列实现示例
2021/02/24 Python
HTML5学习心得总结(推荐)
2016/07/08 HTML / CSS
白酒市场营销方案
2014/02/25 职场文书
团日活动总结
2014/04/28 职场文书
反四风对照检查材料思想汇报
2014/09/16 职场文书
业务员辞职信范文
2015/03/02 职场文书
工程主管竞聘书
2015/09/15 职场文书
女方家长婚礼答谢词
2015/09/29 职场文书
一文简单了解MySQL前缀索引
2022/04/03 MySQL