yii 利用 Pagination 作异步分页

1 php 后端php

public function actionPage() {
        $data = User::find();  //User为model层,在控制器刚开始use了field这个model,这儿能够直接写Field,开头大小写均可以,为了规范,我写的是大写
        $pages = new Pagination(['totalCount' =>$data->count(), 'pageSize' => '30']);    //实例化分页类,带上参数(总条数,每页显示条数)
        $model=$data->offset($pages->offset)->limit($pages->limit)->all();
        
       
        
        $is_ajax = Yii::$app->request->isAjax ;
        if(!$is_ajax){
            return $this->render('show',[
                'datas' => $model ,
                'pages' => $pages,
            ]);exit;
        }
        $string = '' ;
        foreach ($model as $p){
           
            $string .='<li>'.$p['email'].'</li>';
        }
        
        echo json_encode(['datas' => $string,'pages' => LinkPager::widget(['pagination' => $pages])]);
        
    }html

2 模板jquery

   

<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
use yii\widgets\LinkPager;
use yii\helpers\Url;
use yii\web\View;
?>web

<html>
<?=Html::jsFile('@web/js/jquery-2.1.0.js')?>
<style>
* {  
    margin: 0;  
    border: 0;  
    padding: 0;  
    font-size: 13pt;  
}  
  
#page {  
    height: 40px;  
    border-top: #060 2px solid;  
    border-bottom: #060 2px solid;  
    background-color: #690;  
}  
  
#page ul {  
    list-style: none;  
    margin-left: 50px;  
}  
  
#page li {  
    display: inline;  
    line-height: 40px;  
}  
  
#page a {  
    color: #fff;  
    text-decoration: none;  
    padding: 20px 20px;  
}  
  
#page a:hover {  
    background-color: #060;  
}
</style>
<body>
<div>
  <ul id="lists">
       <?php foreach( $datas as $p) {  ?>
         <li><?php echo $p['email'];?></li>
       <?php }?>
  </ul>
</div>
<div id="page">
<?=LinkPager::widget(['pagination' => $pages,]);?>
</div>ajax

<script>json

$(function(){后端

    $(document).on('click','.pagination a',function(e){
        e.preventDefault();
        var url = $(this).attr('href');
        $.get(url,function(msg){
            //alert(msg);
            $('#lists').html(msg.datas);
            $("#page").html(msg.pages);
        },'json');
    });
});
</script>
</body>
</html>app

相关文章
相关标签/搜索