2013-07-19 69 views
2

我有一個問題,我無法找到一種方法如何做JSON從PHP獲得分頁,這裏是我的代碼:Yii的分頁到JSON

  $type_name = substr(trim($_POST['type']),1); 

      $criteria = new CDbCriteria(); 
      $count=ImageLibrary::model()->count($criteria); 
      $pages=new CPagination($count); 


      $pages->pageSize=10; 
      $pages->applyLimit($criteria); 
      $criteria->select = 'name,type'; 
      $criteria->condition = 'type=:type'; 
      $criteria->params = array('type' => $type_name); 
      $model = ImageLibrary::model()->findAll($criteria); 

      foreach($model as $key => $data){ 
       $json_data[$key]['name'] = $data->name; 
       $json_data[$key]['type'] = $data->type; 
      } 

      echo CJSON::encode($json_data); 

我得到的數據,但我不知道,如何使用json :(或者如果以其他方式存在) 謝謝你的幫助!!!!

+0

「不知道如何讓json」不確定你的意思。 'CJSON :: encode'應該將它轉換爲一個JSON數組給你。 – Pitchinnate

+0

我需要CLinkPager帶到json,我不需要像html一樣生成,它可以返回json,就像「json grid」一樣http://yiibooster.clevertech.biz/json-grid.html – mIRU

回答

0

不必這樣做,你可以渲染出整個HTML結果,分頁部件

來自我的一個項目的示例:

$count = AdStavke::model()->count($criteria); 
$pages = new CPagination($count); 

$pages->pageSize = 20; 
$pages->applyLimit($criteria); 

$stavke = AdStavke::model()->findAll($criteria); 

if (sizeof($stavke)) { 
    $response = array(
     'success' => true, 
     'html' => $this->renderPartial($types[$type]['view_file'], array(
      'model' => $stavke, 
      'pages' => $pages, 
      'nezaduzene' => true, 
       ), true), 
    ); 
} 

在查看:

<div id="appTable"> 
    <table class="tablesorter stavke zaduzene table table-striped table-hover table-condensed table-bordered"> 
     <thead> 
      <tr class="descriptioner"> 
       <th colspan="9"> 
        <div class="pull-left"> 
         Lista <span class="label label-warning" style="font-size: 14px;">zaduženih</span> stavki u: <?= $model[0]->stavka->vrsta->naziv; ?> 
        </div> 
        <div class="pull-right"> 
         <?php 
         $this->widget('CLinkPager', array(
          'htmlOptions' => array(
           'class' => 'yiiPager yiiPager_2', 
          ), 
          'pages' => $pages, 
          'header' => false, 
          'firstPageLabel' => 'Prva', 
          'lastPageLabel' => 'Zadnja', 
          'prevPageLabel' => 'Prethodna', 
          'nextPageLabel' => 'Sljedeća', 
         )); 
         ?> 
        </div> 
        <div class="clearfix"></div> 
       </th> 
      </tr> 
     </thead> 
    </table> 
</div> 

而且你可以發送一個簡單的AJAX請求與更新,分頁更改entrie觀點:

$.post('/aplikacije/ajax/fetch', { 
    submit: true, 
    type: 'stanja', 
    seek: mapped.data('stanje'), 
    vrsta_id: $('.vrstex.active').first().data('vid'), 
    q: _mapped.val() 
}, function(data) { 
    if(data.success) { 
     $('#appTable').html(data.html); 
    } 
}, 'json'); 

注:此代碼源自我的一個生活項目,從這裏你可以瞭解如何使用AJAX進行Yii分頁。

+0

我需要json方式,因爲http響應速度更快:) – mIRU

+0

這是一種JSON方式...您只輸出更多HTML ... – 2013-07-19 13:24:46