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
));

しかし、リンクをクリックしようとすると、ページがリロードされます。オプション セットは完全に無視されます。同じページで他の Ajax 呼び出しが呼び出されているため、ページで JQuery にアクセスできます。

4

2 に答える 2

0

以前も同じ問題に遭遇しました。私がしたことは、代わりに独自の jquery bind 関数を作成することでした。私は取り除く$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 に答える