2012-04-13 61 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