ThinkPHP5.1+Ajax实现的无刷新分页功能示例

 更新时间:2020年02月10日 08:42:19   作者:pan_yuyuan  
这篇文章主要介绍了ThinkPHP5.1+Ajax实现的无刷新分页功能,结合实例形式详细分析了ThinkPHP5.1+Ajax无刷新分页具体原理、前台数据发送与后台处理相关操作技巧,需要的朋友可以参考下

本文实例讲述了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>&nbsp;&nbsp;
              <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>&laquo;</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" >&raquo;</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相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》及《PHP模板技术总结》。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

相关文章

  • 简述PHP7.4 新特性和废弃的功能

    简述PHP7.4 新特性和废弃的功能

    这篇文章主要介绍了简述PHP7.4 新特性和废弃的功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • jquery+thinkphp实现跨域抓取数据的方法

    jquery+thinkphp实现跨域抓取数据的方法

    这篇文章主要介绍了jquery+thinkphp实现跨域抓取数据的方法,结合实例形式分析了thinkPHP结合jQuery的ajax实现跨域抓取数据的相关操作技巧,需要的朋友可以参考下
    2016-10-10
  • 详解PHP数据压缩、加解密(pack, unpack)

    详解PHP数据压缩、加解密(pack, unpack)

    网络通信、文件存储中经常需要交换数据,为了减少网络通信流量、文件存储大小以及加密通信规则,本文介绍了PHP数据压缩、加解密,有兴趣的可以了解一下。
    2016-12-12
  • PHP实现转盘抽奖算法分享

    PHP实现转盘抽奖算法分享

    这篇文章主要为大家详细介绍了PHP实现大转盘抽奖算法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • ThinkPHP空模块和空操作详解

    ThinkPHP空模块和空操作详解

    这篇文章主要介绍了ThinkPHP空模块和空操作,需要的朋友可以参考下
    2014-06-06
  • PHP抽奖算法程序代码分享

    PHP抽奖算法程序代码分享

    这篇文章主要分享了PHP抽奖算法程序设计,抽奖在日常生活中大家都会接触到,用php如何实现抽奖算法,需要了解的朋友可以参考一下
    2015-10-10
  • 详解Yii2 定制表单输入字段的标签和样式

    详解Yii2 定制表单输入字段的标签和样式

    本篇文章主要介绍了 Yii2 定制表单输入字段的标签和样式,Yii2中对于表单和字段的支持组件为ActiveForm和ActiveField,有兴趣的可以了解一下。
    2017-01-01
  • PHP实现微信商户支付企业付款到零钱功能

    PHP实现微信商户支付企业付款到零钱功能

    这篇文章主要为大家详细介绍了PHP实现微信商户支付企业付款到零钱功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • 详解thinkphp实现excel数据的导入导出(附完整案例)

    详解thinkphp实现excel数据的导入导出(附完整案例)

    本篇文章主要介绍了thinkphp实现excel数据的导入导出,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2016-12-12
  • Zend Framework处理Json数据方法详解

    Zend Framework处理Json数据方法详解

    这篇文章主要介绍了Zend Framework处理Json数据方法,结合实例形式分析了zend framework针对json相关操作类的使用方法,需要的朋友可以参考下
    2016-12-12

最新评论