本文实例讲述了thinkPHP5框架实现基于ajax的分页功能。分享给大家供大家参考,具体如下:
最近一个页面的选项卡又牵扯到ajax分页,所以研究了一下tp5的ajax分页使用方法
首先看一下tp5的分页功能介绍
| 参数 | 描述 | 
|---|---|
| list_rows | 每页数量 | 
| page | 当前页 | 
| path | url路径 | 
| query | url额外参数 | 
| fragment | url锚点 | 
| var_page | 分页变量 | 
| type | 分页类名 | 
$caseDetails = CaseDetails::where(['status'=>1])->paginate(9,false,['path'=>'javascript:AjaxPage([PAGE]);']);
所以我们分页查询写成上面代码所示。
这样页面显示每个分页上面变成了AjaxPage('当前分页数,自动变化')
然后我们就可以在页面中写一个对应的函数AjaxPage(page),来完成对应的ajax请求查询,在返回到指定的视图中
ajax请求控制器方法如下
public function all()
{
 $caseDetails = CaseDetails::where(['status'=>1])->paginate(9,false,['path'=>'javascript:AjaxPage([PAGE]);']);
 return view('getall',['res'=>$caseDetails]);
}
如果选项卡带ID再次查询对应当前分类,可以使用如下
public function getAjax($id,$page=1)
{
 $res = CaseDetails::where(['category'=>$id])->paginate(9,false,['page'=>$page,'path'=>"javascript:AjaxDetailsPage({$id},[PAGE]);"]);
 return view('',['res'=>$res]);
}
js代码如下:
function AjaxPage(page){
 $.get('/index/successcase/getAll',{ page:page },function (data) {
 $('.little-content').html(data);
 })
}
$('.on').hover(function(){
 $.get('/index/successcase/all',function (data) {
 $('.little-content').html(data);
 })
});
$('.title-id').hover(function(){
 var id = $(this).attr('title');
 $.get('/index/successcase/getajax',{ 'id':id },function(data){
 $('.little-content').html(data);
 });
});
function AjaxDetailsPage(id,page){
 $.get('/index/successcase/getAjax',{ id:id,page:page },function (data) {
 $('.little-content').html(data);
 })
}
ajax作用范围视图
{volist name="res" id="casedetails"}
<li class="little-block">
 <img src="{$casedetails.pic}"/>
 <div class="mb-text">
 <div class="text">
 <h1>{$casedetails.name}</h1>
 <p class="p3">{$casedetails.caseCategory.name}</p>
 <a href="#" rel="external nofollow" >VIEW MORE</a>
 </div>
 </div>
</li>
{/volist}
<br>
{$res->render()}