Ajax不在分页中工作

时间:2014-06-07 12:51:45

标签: ajax cakephp pagination

我正在使用CakePHP 2.3.6。在我的一个项目中,我想创建Ajax Pagination。为此,我尝试了这个:

在我的AppController.php

public $helpers=array('Js','Paginator');
public $components=array('RequestHandler');

在我的Cntrl1Controller.php

public $paginate=array(
                    'Model1'=>array(
                              'limit'=>10,
                              'order'=>array('Model1.field1 DESC')
                     )
)

public function index(){
  $this->paginate['Model1']['conditions']=array('Model1.field1'=>[value]);
  $data1=$this->paginate('Model1');
  $this->set('data1',$data1);
}

在我的Cntrl2Controller.php

public $paginate=array(
                    'Model2'=>array(
                              'limit'=>10,
                              'order'=>array('Model2.field1 DESC')
                     )
)

public function index(){
  $this->paginate['Model2']['conditions']=array('Model2.field1'=>[value]);
  $data2=$this->paginate('Model2');
  $this->set('data2',$data2);
}

在我的View文件中(两者都是index.ctp):

<ul class="pagination">
<?php
    echo "<li>".$this->Paginator->prev('Prev')."</li>".$this->Paginator->numbers(array('tag'=>'li','currentClass'=>'active','currentTag'=>'a','separator'=>null))."<li>".$this->Paginator->next('Next')."</li>";
?>
</ul>

在我的default layout

<head>
<?php
    $this->Paginator->options(
                           array(
                             'update'=>'#content','evalScripts'=>true,
                             'before'=>$this->Js->get('#busy-indicator')->effect('fadeIn', array('buffer'=>false)),
                             'complete'=>$this->Js->get('#busy-indicator')->effect('fadeOut', array('buffer'=>false))
                           )
    );
?>
</head>
<body>
.
.
.
<?php
   echo $this->Html->image('indicator.gif',array('id'=>'busy-indicator'));
?>
.
.
.
<?php echo $this->Js->writeBuffer();?>
</body>

现在,我的问题是,分页工作正常,所有数据都成功返回。但是,它不是AJAX Pagination,我的意思是,当我浏览页面时,整个页面会重新加载,而不仅仅是content <div>。但是,我希望只重新加载div,而不是其他任何内容。

那么,你们觉得怎么样?这里有什么问题 ?我该怎么办?

请帮帮我。

由于

1 个答案:

答案 0 :(得分:1)

我想,您忘了在页面底部添加缓冲区代码。

echo $ this-&gt; Js-&gt; writeBuffer(); //编写缓存脚本

并检查您的浏览器控制台可能存在一些js问题。