0

CakePHP 1.3 と の jQuery スクリプトを使用していhttp://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.jsます。私が抱えている問題は<div id="part2">、ページの をリロードするための AJAX 呼び出し時に、 内のページ全体 ( test_page.ctp) をリロードすることです<div id="part2">。更新を分離して、一部<div id="part2">のみをロードするにはどうすればよいですか?<div id="part2">test_page.ctp

の CakePHP コードtest_page.ctp:

// at the beginning of cpt file
$this->Paginator->options(array(
    'evalScripts' => true,
    'update' => '#part2',
    'before' => $this->Js->get('#loading')->effect('fadeIn', array('speed' => 'fast')),
    'complete' => $this->Js->get('#loading')->effect('fadeOut', array('speed' => 'fast'))
));

// at the very end of ctp file
echo $this->Js->writeBuffer();

.../controller_name/test_page初期ロード時の私のページ ( ) のレイアウト:

- - - - - - - - - - - - - - - -
|  <div id="part1">...</div>  |
- - - - - - - - - - - - - - - -
|  <div id="part2">           |
|   ...                       |
|  <previous> 1 2.. 5 <next>  |
|  </div>                     |
- - - - - - - - - - - - - - - -

.../controller_name/test_page別のページに移動した後のマイページ ( ) のレイアウト:

- - - - - - - - - - - - - - - -
|  <div id="part1">...</div>  |
|  this <div> is not reloaded |
- - - - - - - - - - - - - - - -
|  <div id="part2">           |
|      <div id="part1">       |
|          entire next page   |
|      </div>                 |
|  </div>                     |
- - - - - - - - - - - - - - - -

コンテンツのみで更新したいときに、AJAX 呼び出しが全体を挿入するという問題がありますtest_page.ctp<div id="part2"><div id="part2">

4

2 に答える 2

1

私の場合、このコードをに移動しただけで、layoutうまくいきました:

$this->Paginator->options(array(
    'evalScripts' => true,
    'update' => '#part2',
    'before' => $this->Js->get('#loading')->effect('fadeIn', array('speed' => 'fast')),
    'complete' => $this->Js->get('#loading')->effect('fadeOut', array('speed' => 'fast'))
));
于 2014-10-08T11:08:02.807 に答える
1

.ctpレンダリングしたいコンテンツを含む/生成する別のファイルを作成する必要があります。次に、そのファイルをレイアウト内にレンダリングしますajaxajaxレイアウトは基本的に、.ctpファイルの内容を出力するだけの空のレイアウトです。これがどのように機能するかです:

-----------------------------
|    OuterSection is your   |
|    Layout                 |
|  -----------------------  |
|  | Inner Section is    |  |
|  | your view file      |  |
|  |                     |  |
|  -----------------------  |
|---------------------------|

これがレンダリングのしくみであり、Web サイトのレイアウトをすべての異なるページから分離するために存在します。ajaxCake 1.3のレイアウト内でレンダリングするには、次を使用します。

$this->layout = 'ajax';

AJAX呼び出しで呼び出しているコントローラー関数内。

于 2013-07-07T08:01:34.400 に答える