美文网首页
ThinkPHP5.1+Ajax无刷新分页

ThinkPHP5.1+Ajax无刷新分页

作者: Medicine_8d60 | 来源:发表于2019-10-09 18:20 被阅读0次

无刷新分页可以减轻服务器负担,利用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> {ifvo.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">2</a></li>
<li>
<a href="/xkershouche/public/admin/selfattribute/lst.html?page=3">3</a></li>
<li>
<a href="/xkershouche/public/admin/selfattribute/lst.html?page=4">4</a></li>
<li>
<a href="/xkershouche/public/admin/selfattribute/lst.html?page=5">5</a></li>
<li>
<a href="/xkershouche/public/admin/selfattribute/lst.html?page=6">6</a></li>
<li>
<a href="/xkershouche/public/admin/selfattribute/lst.html?page=2">»</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();
}
}
原文链接: http://www.xiaokethinkphp.com/archives/110

相关文章

  • ThinkPHP5.1+Ajax无刷新分页

    无刷新分页可以减轻服务器负担,利用Ajax技术,请求部分信息,提高网站访问速度,是网站建设的必备技术。 以二手车项...

  • Android简单实现 万能适配器 + 下拉刷新 + 无感分页加

    万能适配器 + 下拉刷新 + 无感分页 v3.1更新 完善更多下拉刷新场景 增加【上拉分页加载】和【无感分页加载】...

  • Ajax无刷新分页

    原理 因为分页需要显示页数,限制循环。所以需要先获取最大页数。当进入页面时就将查询到的页数和第一页默认显示的数据发...

  • tips: vue 路由不刷新数据

    如果使用 VUE 路由,例如分页场景。页面数据无刷新,记得检查 rouver-view 是否包含了 key

  • RecyclerView的刷新分页

    在开发中常常使用到刷新分页,这里实现一个 RecyclerView 的简单的刷新分页操作,测试效果见文末,实现过程...

  • LayUI组件使用-分页组件

    一、分页组件 layPage 致力于提供极致的分页逻辑,既可轻松胜任异步分页,也可作为页面刷新式分页。自 layu...

  • AJAX

    概述 在不刷新页面的情况下更新页面的数据。(布局更新) 应用场景: 实现页面上拉加载更多数据 列表数据无刷新分页 ...

  • Android下拉刷新,上拉加载——Ultra-Pull-To-

    个人博客:haichenyi.com。感谢关注 简介 Android里面刷新和分页加载是常见的,刷新有Google...

  • IOS上拉 下拉刷新

    iOS下拉刷新和上拉刷新 在iOS开发中,我们经常要用到下拉刷新和上拉刷新来加载新的数据,当前这也适合分页。iOS...

  • SpringMVC-Ajax

    ajax:异步刷新技术,可以在步刷新整个页面的前提下,刷新部分页面,节省资源 环境搭建:1、搭建好SpringMV...

网友评论

      本文标题:ThinkPHP5.1+Ajax无刷新分页

      本文链接:https://www.haomeiwen.com/subject/gyoggqtx.html