CakePHP Ajax分页问题

时间:2013-04-04 18:01:11

标签: ajax cakephp pagination

我正在使用cakephp 2.2.2,我想创建一个简单的ajax分页。我跟着这个(http://book.cakephp.org/2.0/en/core-libraries/helpers/js.html#ajax-pagination),我似乎无法让它正常工作。当我加载页面有时它使用ajax有时它没有,在IE 10中我也得到一些奇怪的东西,如整个菜单折叠到设置为更新的div。

这是我做的:

  1. echo $this->Html->script('jquery');放入我的布局文件的<head>
  2. 我的控制器中包含RequestHandler组件和Js助手。
  3. 把它放在我的视图文件的开头:

    $ this-&gt; Paginator-&gt; options(array('update'=&gt;'#content','evalScripts'=&gt; true));

  4. 将其放在</body>之前的布局文件底部: echo $this->Js->writeBuffer();

  5. 然后我通常使用像这样的分页器:

    echo $ this-&gt; Paginator-&gt; sort('id');

  6. 有人可以告诉我,如果我遗失了什么或出了什么问题,因为我真的无法弄清楚我做错了什么。 非常感谢。

2 个答案:

答案 0 :(得分:2)

我在分页中也遇到了与ajax相同的问题。

我找到了一个临时解决方案。 在控制器功能中,添加以下代码以设置标志变量。

 if($this->request->is('ajax')){
        $this->set('paginate',true);
    }

然后在视图中,您需要隐藏#content div。

以外的部分
<?php if(!isset($paginate)):
    // Code above # content div including the start of div
endif:?>

Pagination code inside the content div

<?php if(!isset($paginate)):
    // Code below # content div including content of div
endif:?>

P.S。逻辑是,当分页完成时,其他部分将不会显示在分页视图中。

答案 1 :(得分:0)

只需将此代码从您的view文件移至layout

即可
$this->Paginator->options(array( 'update' => '#content', 'evalScripts' => true ));