【发布时间】:2014-05-13 11:11:21
【问题描述】:
我需要启用 ajax 分页 我的代码 控制器(更新内容 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(点击事件显示渲染部分)
$(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 加载页面抛出渲染部分,我的分页不起作用,我该如何解决?
【问题讨论】:
-
我不完全确定,但我认为你不应该返回 JSON,而只是 HTML 和 ListView 将完成其余的工作
-
或者如果你自己做所有的事情......忘记 ajaxUpdate 函数,并处理整个请求。我认为你两者都做,如果你想使用列表视图的自动分页,你必须去决定,或者自己做整个分页
-
感谢您的回复,但我如何才能返回 html?我认为这是不正确的,现在我正在尝试更改 CListView js 以更新页面,但它不起作用
-
您可以在省略 JSON::encode 时简单地返回 HTML。并在您的脚本中设置 dataType:HTML
标签: javascript php jquery ajax yii