0

Cakephp サイトのチュートリアルに従いましたが、ajax を使用したページネーションは一度しか機能しません。コンテンツが更新され、問題ありません。しかし、2回目にページリンクをクリックすると、ページ全体がリロードされます-コンテンツが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;});
             ...

たとえば次のページをクリックすると(初めて)、すべてが更新されます(リンクhrefも機能するため)が、スクリプトはリロードされないため、クリックイベントはバインドされず、次のページを再度クリックするとリンクが使用されるだけです。

ページネーション リンクの直後にこれを追加したため、これは奇妙です。

<script>
    $(document).ready(function (){ 
        alert('yes'); 
    });
</script>

そして、最初のajaxリフレッシュ後にアラートが表示されます...そして、このことを設定しました. <?php echo $this->Js->writeBuffer(); ?>最後に...

- - - - - - - - - -編集

ページネーターではないことを認識しました-次の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'));
4

2 に答える 2

3

私はそれを考え出した!!!これは、ajax リクエストがレイアウトを app/View/Layouts/ajax.ctp に設定し、ajax.ctp が次のようになっているためです。

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

この行を追加する必要がありました

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

ajax.ctp に Java スクリプトを記述します (したがって、ajax リンクは ajax 要求の後に機能します)。

そして今、ページネーションは完璧に機能します!!!

于 2012-04-27T23:29:04.517 に答える
-1

Cake php Ajax Paginator が正常に動作していないようです。私も同様の問題を抱えていました。

CakephpプラグインCakephp-DataTableを使用することをお勧めします

このプラグインはページネーションを実装しており、デフォルトでほとんどの機能を備えています。ドキュメントも提供されています。実装に問題がある場合は、問題のセクションを参照してください。

また、開発者は非常に反応がよく、プラグインがある場合はそのプラグインの説明を得ることができます.

于 2012-04-27T08:38:54.873 に答える