Yii与ajax的分页 [英] Yii pagination with ajax

查看:84
本文介绍了Yii与ajax的分页的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要使用ajax启用分页
我的代码
控制器(更新内容ajax)

I need to enable pagination with ajax my code Controller(update content ajax)

 function actionIndex(){
        $dataProvider=new CActiveDataProvider('News', array(

            'pagination'=>array(
                'pageSize'=>1,
            ),
        ));
        if (Yii::app()->request->isAjaxRequest) {
            $done =$this->renderPartial('index', array('dataProvider' => $dataProvider), true);
            echo CJSON::encode($done);
            Yii::app()->end();
        }

        $this->render('index', array(
            'dataProvider'=>$dataProvider,
        ));
    }

JS(点击事件show renderpartial)

JS (on click event show renderpartial)

$(document).ready(function(){
    $(".menunews").click(function() {
        $( "body" ).addClass( "news" );
        $.ajax({
            url: 'index.php/news',
            type: "GET",
            dataType: "JSON",
            success: function(data){
                    $('#news').append(data);
                }

        }).fail(function(){
                alert("Error");
            });
    });

查看

<div class="newscont">
    <h1>News</h1>


        <?php $this->widget('zii.widgets.CListView', array(
            'dataProvider'=>$dataProvider,
            'itemView'=>'_view',
            'template'=>"{items}\n{pager}",
            'ajaxUpdate'=>'true',
            'enablePagination'=>true,
            'pager' => array(
                'firstPageLabel'=>'<<',
                'prevPageLabel'=>'<',
                'nextPageLabel'=>'>',
                'lastPageLabel'=>'>>',
                'maxButtonCount'=>'10',
                'header'=>'<span>Pagination</span>',
                'cssFile'=>Yii::app()->getBaseUrl(true).'/themes/phil/css/pager.css',
            ),
        )); ?>


</div>

但如果我使用ajax加载页面抛出renderpartial我的分页不起作用,我该如何解决它?

But if i load page throw renderpartial using ajax my pagination doesn't work, how i can fix it?

推荐答案

在您的控制器中执行此操作

In your controller do this

    if (Yii::app()->request->isAjaxRequest) {
                $done =$this->renderPartial('index', array('dataProvider' => 
$dataProvider), true);
                echo $done;
                Yii::app()->end();
            }

并将您的ajax调用更改为此

And change your ajax call to this

$.ajax({
            url: 'index.php/news',
            type: "POST",
            dataType: "html",
            success: function(data){
                    $('#news').html(data);
                }

        })

这篇关于Yii与ajax的分页的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆