如何使用jquery ajaxify zend_pagination结果(已经使用了partialoop)

jsp*_*shu 6 php jquery zend-framework zend-paginator

在控制器中我有:

  $paginator = Zend_Paginator::factory($mdlPost->getPosts($this->moduleData->accordion, 'name ASC'));
   if(isset($params['cities'])) {  
          $paginator->setCurrentPageNumber(intval($params['cities']));
            }
$paginator->setItemCountPerPage(4);
$this->view->posts = $paginator;         
Run Code Online (Sandbox Code Playgroud)

在视图中我有这样的事情:

if ($this->posts != null) {?>
  <div id="cities_accord" class="news">
   <?php   echo $this->partialLoop('partials/post-min.phtml', $this->posts); ?>
  </div>   
  <?php   echo $this->paginationControl($this->posts,
                                'Sliding',
                                'public/pagination_cont.phtml'); 
}
Run Code Online (Sandbox Code Playgroud)

部分/后min.phtml

<?php 
$color = array(1=>'spring',2=>'summer',3=>'autumn',4=>'winter');
?>

<div id='<?php echo $color[$this->partialCounter] ?>' class="accordion_post">
<?php
$link = Digitalus_Uri::get(false, false, array('openCity' =>      
  $this->id));//$color[$this->partialCounter]));
?>

<h1 class="accordion_post_title"><?php echo $this->title ?></h1>

<p><?php echo $this->teaser ?> <a href="<?php echo $link;?>"><i>read more</i></a></p>
</div>
Run Code Online (Sandbox Code Playgroud)

从这个链接获取的pagination_cont.phtml zend(http://framework.zend.com/manual/en/zend.paginator.usage.html)将显示将params传递给控制器​​以获取相应整个页面的链接.现在好好工作

但我想改变这一点,以便我能够ajaxify返回(即只有一个分页值而不是重新加载整个页面)结果我怎么能用jquery做什么,我应该改变什么..

**编辑:如果可能的话,对于禁用javascript以通过重新加载页面来查看相同内容的浏览器(用户)进行故障保存会很好(即保持if(javascript_not_enabled)的当前状态)**

jsp*_*shu 1

明白了,非常感谢@Phil Brown:

在控制器 int() 中将响应类型更改为 json

  class NewsController extends Zend_Controller_Action

  {

      public function init()

      {

          $contextSwitch = $this->_helper->getHelper('contextSwitch');

          $contextSwitch->addActionContext('list', 'JSON')

                        ->initContext();

      }



      // ...

  }


public listAtcion() {

  //  .............

  $paginator = Zend_Paginator::factory($mdlPost->getPosts($this->moduleData->accordion, 'name ASC'));
   if(isset($params['cities'])) {  
         $paginator->setCurrentPageNumber(intval($params['cities']));
         }
  $paginator->setItemCountPerPage(4);

  $post = array();
  foreach($paginator as $post ) {
      $post[] = $post;
  }

  $this->view->post = $paginator; 

  #TODO //add a check here for non-ajax requests (#improvment)
    $this->view->posts = $paginator;     

}
Run Code Online (Sandbox Code Playgroud)

在分页控制器上的视图之一(最有可能在 pagination_cont.phtml 中)添加 ajax 链接

 <?= $this->ajaxLink (
                 $this->url('cities'=>$this->page_num),array('id'=>'div_id','complete'=>'js_method(json_data)','method'=>post) ,array('format'=>'JSON'));
Run Code Online (Sandbox Code Playgroud)

并添加 js_method(json_data) 的 JavaScript 函数,用 json 数据修改 id = 'div_id' 的 div

  function js_method(json_data) { 
    var content = parse.JSON(json_data);
     $('#div_id').html(''); 
    //fill it with the reposnse content  some thing like  $('#div_id').append(content); 
  }
Run Code Online (Sandbox Code Playgroud)