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 相关文章推荐
php中文件上传的安全问题
Oct 09 PHP
IIS6.0+PHP5.x+MySQL5.x+Zend3.0x+GD+phpMyAdmin2.8x通用安装实例(已经完成)
Dec 06 PHP
PHP使用ODBC连接数据库的方法
Jul 18 PHP
关于php中一些字符串总结
May 05 PHP
PHP将MySQL的查询结果转换为数组并用where拼接的示例
May 13 PHP
CI框架常用方法小结
May 17 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
Aug 30 PHP
Laravel学习基础之migrate的使用教程
Oct 11 PHP
PHP实现求连续子数组最大和问题2种解决方法
Dec 26 PHP
PHP有序表查找之插值查找算法示例
Feb 10 PHP
laravel框架select2多选插件初始化默认选中项操作示例
Feb 18 PHP
php开发最强大的IDE编辑的phpstorm 2020.2配置Xdebug调试的详细教程
Aug 17 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 foreach正序倒序输出示例代码
2014/07/01 PHP
thinkphp四种url访问方式详解
2014/11/28 PHP
YII2自动登录Cookie总是失效的解决方法
2017/06/28 PHP
PHP实现按之字形顺序打印二叉树的方法
2018/01/16 PHP
PHP实现动态获取函数参数的方法示例
2018/04/02 PHP
jQuery ajax在GBK编码下表单提交终极解决方案(非二次编码方法)
2010/10/20 Javascript
基于JavaScript 声明全局变量的三种方式详解
2013/05/07 Javascript
js使下拉列表框可编辑不止是选择
2013/12/12 Javascript
JS实现带圆弧背景渐变效果的导航菜单代码
2015/10/13 Javascript
JS实现仿Windows经典风格的选项卡Tab切换代码
2015/10/20 Javascript
用jQuery实现优酷首页轮播图
2017/01/09 Javascript
vue使用drag与drop实现拖拽的示例代码
2017/09/07 Javascript
Angular5给组件本身的标签添加样式class的方法
2018/04/07 Javascript
vue服务端渲染添加缓存的方法
2018/09/18 Javascript
nodejs中函数的调用实例详解
2018/10/31 NodeJs
vue+Element-ui实现分页效果实例代码详解
2018/12/10 Javascript
Nodejs libuv运行原理详解
2019/08/21 NodeJs
Node.js中console.log()输出彩色字体的方法示例
2019/12/01 Javascript
python模块之sys模块和序列化模块(实例讲解)
2017/09/13 Python
Python八大常见排序算法定义、实现及时间消耗效率分析
2018/04/27 Python
Python实现分段线性插值
2018/12/17 Python
Python pip替换为阿里源的方法步骤
2019/07/02 Python
python3 tcp的粘包现象和解决办法解析
2019/12/09 Python
Python matplotlib绘制图形实例(包括点,曲线,注释和箭头)
2020/04/17 Python
Python虚拟环境库virtualenvwrapper安装及使用
2020/06/17 Python
html5中valid、invalid、required的定义
2014/02/21 HTML / CSS
马来西亚综合购物网站:Lazada马来西亚
2018/06/05 全球购物
牛津在线药房:Oxford Online Pharmacy
2020/11/16 全球购物
C面试题
2015/10/08 面试题
销售经理工作职责范文
2013/12/03 职场文书
新闻编辑求职信
2014/04/09 职场文书
煤矿隐患排查制度
2015/08/05 职场文书
积极心理学课程心得体会
2016/01/22 职场文书
Jsonp劫持学习
2021/04/01 PHP
python字符串的多行输出的实例详解
2021/06/08 Python
python获取对象信息的实例详解
2021/07/07 Python