0

我按照 cakephp 网站上的教程进行操作,但使用 ajax 进行分页只能工作一次 - 内容已更新并且没问题。但是我第二次点击一些页面链接,整个页面被重新加载——我认为当 ajax 刷新内容时 click() 事件处理程序不会再次绑定——我不知道为什么......我正在使用这个:

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

当我在源代码中加载页面时,有:

<a href="/final/books/index/page:9/sort:id/direction:asc" id="link-458631432" rel="prev">« Previous</a>

    $(document).ready(function (){
         $("#link-925538478").bind("click", function (event) {
             $.ajax({dataType:"html", success:function (data, textStatus){
                 $("#content").html(data);}, url:"\/final\/books\/index\/page:10\/sort:id\/direction:desc"});
                 return false;});
             ...

例如,当我单击下一页(第一次)时,所有内容都会刷新(链接hrefs也可以正常工作)但脚本没有重新加载,因此我认为没有绑定点击事件,再次点击下一页只是使用链接。

这很奇怪,因为我在分页链接之后添加了这个:

<script>
    $(document).ready(function (){ 
        alert('yes'); 
    });
</script>

并在第一次 ajax 刷新后显示警报......我设置了这个东西。<?php echo $this->Js->writeBuffer(); ?>在最后...

- - - - - - - - - -编辑

我认识到它不是分页器 - 对于以下 2 个链接:

<?php echo $this->Js->link('link1', array('author' => 'abc'), array('update' => '#content')); ?>
<?php echo $this->Js->link('link2', array('author' => '123'), array('update' => '#content')); ?>

它是一样的-当我单击link1它的ajax时,然后当我单击link2时会正常重新加载-因此在ajax刷新后与脚本评估有关...那可能是什么?

我正在像这样设置 JSHelper:

var $helpers = array('Js' => array('Jquery'));
4

2 回答 2

3

我想到了!!!这是因为 ajax 请求将布局设置为 app/View/Layouts/ajax.ctp 而 ajax.ctp 是:

<?php echo $this->fetch('content'); ?>

我不得不添加这一行

<?php echo $this->Js->writeBuffer(); ?>

到 ajax.ctp 编写 java 脚本(因此 ajax 链接在 ajax 请求后工作)。

现在分页工作完美!

于 2012-04-27T23:29:04.517 回答
-1

Cake php Ajax Paginator 似乎无法正常工作。我也有类似的问题。

我会推荐你​​使用 cakephp 插件Cakephp-DataTable

这个插件已经实现了分页,默认情况下它具有大部分功能。他们还提供了文档,如果您在实施中发现任何困难,请查看问题部分

此外,开发人员反应迅速,如果您有任何插件,可以得到澄清。

于 2012-04-27T08:38:54.873 回答