【问题标题】:cakephp ajax pagination works only once - scripts are not evaluatedd?cakephp ajax 分页只工作一次 - 不评估脚本?
【发布时间】:2012-04-27 06:59:07
【问题描述】:

我按照 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 刷新后会显示警报... 我设置了这个东西。 &lt;?php echo $this-&gt;Js-&gt;writeBuffer(); ?&gt;最后...

-------编辑

我认识到它不是分页器 - 对于以下 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'));

【问题讨论】:

    标签: ajax cakephp


    【解决方案1】:

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

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

    我必须添加这一行

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

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

    现在分页效果很好!!!

    【讨论】:

    • 谢谢它有效。我已经改变了一点。如果您有共同的分页,请在分页元素中使用 writeBuffer :)
    【解决方案2】:

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

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

    这个插件已经实现了分页,它默认具有大部分功能。他们还提供了文档,如果您在实施过程中发现任何困难,请通过issues section

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

    【讨论】:

      猜你喜欢
      • 2017-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多