2012-04-13 105 views
2

我正在使用CakePHP内置的分页程序帮助程序,并尝试将其与Ajax集成时遇到了问题。带有Ajax的CakePHP分页程序 - Ajax调用没有被调用

实际分页程序(这是本):

echo $this->Paginator->prev('« Previous', null, null, array('class' => 'disabled')); 

echo $this->Paginator->next('Next »', null, null, array('class' => 'disabled')); 

工程和工作正常。但是,它会导致页面重新加载,这并不是我想要发生的事情。使用文档,它说,使用下面的代码:

$this->Paginator->options(array(
    'update' => '#testtable', // This is the name of the table to be refreshed 
    'evalScripts' => true 
)); 

但是,当我去点击它仍然只是重新加载页面的链接。它完全忽略了所设置的选项。可以在页面上访问JQuery,因为在同一页面上调用了其他Ajax调用,我正在努力思考还有什么错误?

+0

你能发表一个更深入的代码示例吗? (具体是什么在结果页上呈现?),如果你不能在蛋糕中找出它,你可以很容易地拦截和纠正问题在javascript :) – Ryan 2012-04-16 12:41:24

+0

请添加您的JavaScript代码用于数据表,我认为这将是有益的进行调试。 – Saanch 2012-04-19 10:18:19

+0

@Ryan - 我会尽快更新它,尽管没有错误发生。 – mickburkejnr 2012-04-19 10:23:17

回答

0

添加下面的脚本在您的视图文件或布局文件,并尝试

jQuery(document).ready(function() { 
    jQuery('#example').dataTable({ 
    "sPaginationType": "full_numbers", 
    "bProcessing": true, 
    "bServerSide": true, 
    "sAjaxSource": src="<?= $this->base;?>/controller/action/<?=$dataId;?>",  
}); 

这可能Ajax功能添加到分页。

我会建议你使用CakePHP的插件Cakephp-DataTable

这个插件已经实现了分页和默认情况下它具有的大部分功能。他们还提供了文档,如果您发现执行有任何困难,请通过issues section

此外,开发人员的响应速度非常快,如果您有任何问题,可以对该插件进行说明。

0

我遇到过同样的问题。我所做的是创建我自己的jQuery绑定函数。我摆脱了$this->Paginator->options()

 $('.prev a, .next a').bind('click', function(event){ 
     event.preventDefault(); 

     var url_link = $(this).attr('href'); 
     $.ajax ({ async:true, 
      beforeSend: function (XMLHttpRequest) {$("#busy-indicator").fadeIn();}, 
      complete: function (XMLHttpRequest, textStatus) {$("#busy-indicator").fadeOut();}, 
      dataType: "html", evalScripts:true, 
      success: function (data, textStatus) { 
       $("#testtable").empty().html(data); 
      }, 
      url: url_link}); 
      return false; 

     });   
+0

在你看来,如果你打电话给一个外部脚本,它应该看起来像这样。 '<?php echo $ this-> Html-> script('jqueryfile'); ?>请注意你的脚本应该是内联的,而不是放在头上。 – Bob 2012-04-23 07:21:06