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 相关文章推荐
pw的一个放后门的方法分析
Oct 08 PHP
php对gzip文件或者字符串解压实例参考
Jul 25 PHP
php 页面执行时间计算代码
Dec 04 PHP
PHP隐形一句话后门,和ThinkPHP框架加密码程序(base64_decode)
Nov 02 PHP
Android ProgressBar进度条和ProgressDialog进度框的展示DEMO
Jun 19 PHP
PHP中大于2038年时间戳的问题处理方案
Mar 03 PHP
php源码分析之DZX1.5加密解密函数authcode用法
Jun 17 PHP
php获取本机真实IP地址实例代码
Mar 31 PHP
PHP封装的分页类与简单用法示例
Feb 25 PHP
java解析json方法总结
May 16 PHP
PHP大文件切割上传功能实例分析
Jul 01 PHP
php上传后台无法收到数据解决方法
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
Smarty结合Ajax实现无刷新留言本实例
2007/01/02 PHP
dedecms模板标签代码官方参考
2007/03/17 PHP
PHP重定向的3种方式
2013/03/07 PHP
php验证手机号码
2015/11/11 PHP
php编程每天必学之表单验证
2016/03/01 PHP
PHP使用PDO访问oracle数据库的步骤详解
2017/09/29 PHP
用JS实现一个页面多个css样式实现
2008/05/29 Javascript
15个款优秀的 jQuery 图片特效插件推荐
2011/11/21 Javascript
JS判断元素为数字的奇异写法分享
2012/08/01 Javascript
JS异常处理的一个想法(sofish)
2013/03/14 Javascript
Firefox中通过JavaScript复制数据到剪贴板(Copy to Clipboard 跨浏览器版)
2013/11/22 Javascript
js验证输入是否为手机号码或电话号码示例
2013/12/30 Javascript
百度地图自定义控件分享
2015/03/04 Javascript
javascript中判断json的方法总结
2015/08/27 Javascript
Bootstrap每天必学之缩略图与警示窗
2015/11/29 Javascript
JavaScript高级程序设计(第三版)学习笔记6、7章
2016/03/11 Javascript
jQuery获取select选中的option的value值实现方法
2016/08/29 Javascript
搭建简单的nodejs http服务器详解
2017/03/09 NodeJs
使用vue实现简单键盘的示例(支持移动端和pc端)
2017/12/25 Javascript
Vue组件Draggable实现拖拽功能
2018/12/01 Javascript
jquery的$().each和$.each的区别
2019/01/18 jQuery
浅谈express.js框架中间件(middleware)
2019/04/07 Javascript
基于vue+uniapp直播项目实现uni-app仿抖音/陌陌直播室功能
2019/11/12 Javascript
[06:59]DOTA2-DPC中国联赛3月7日Recap集锦
2021/03/11 DOTA
测试、预发布后用python检测网页是否有日常链接
2014/06/03 Python
Python 正则表达式入门(中级篇)
2016/12/07 Python
TensorFlow实现RNN循环神经网络
2018/02/28 Python
Python基于递归和非递归算法求两个数最大公约数、最小公倍数示例
2018/05/21 Python
Python爬虫图片懒加载技术 selenium和PhantomJS解析
2019/09/18 Python
python学生管理系统的实现
2020/04/05 Python
HTML5 Canvas 起步(2) - 路径
2009/05/12 HTML / CSS
什么是SCM(软件配置管理)
2014/08/16 面试题
高三地理教学反思
2014/01/11 职场文书
我爱读书演讲稿
2014/05/07 职场文书
试用期旷工辞退通知书
2015/04/17 职场文书
2015秋季开学典礼新闻稿
2015/07/17 职场文书