2

我正在使用 CakePHP 内置的 Paginator 助手,并在尝试将其与 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 调用,我正在努力思考还有什么问题?

4

2 回答 2

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;

        });        
于 2012-04-23T06:59:16.873 回答
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

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

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

于 2012-04-19T10:47:20.263 回答