Мне нужно включить разбиение на страницы с помощью 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 (при щелчке события 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>
Но если я загружаю бросок страницы renderpartial, используя ajax, моя разбивка на страницы не работает, как я могу это исправить?
В контроллере сделайте это
if (Yii::app()->request->isAjaxRequest) { $done =$this->renderPartial('index', array('dataProvider' => $dataProvider), true); echo $done; Yii::app()->end(); }
И измените ваш аякс-вызов на этот
$.ajax({ url: 'index.php/news', type: "POST", dataType: "html", success: function(data){ $('#news').html(data); } })
@ Да, я также вижу правильный ответ , но второй способ заключается в том, что вы можете так использовать:
if (Yii::app()->request->isAjaxRequest) { $done =$this->renderPartial('index', array('dataProvider' => $dataProvider), true); echo CJSON::encode(array( 'status' => 'success', 'html' => $done, )); Yii::app()->end(); } $.ajax({ url: 'index.php/news', type: "GET", dataType: "JSON", success: function(data){ $('#news').append(data.html); } });
Это правильный способ получить JSON
с сервера, или вы хотите использовать HTML
ответ, используя @Let me, см. Ответ