0

我正在使用 CakePHP 1.3 和http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js. 我遇到的问题是,在 AJAX 调用重新加载页面<div id="part2">时,它会重新加载. 如何隔离更新并仅加载一部分?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包含/生成您想要呈现的内容的文件。ajax然后在布局中渲染该文件。ajax布局本质上是一个空布局,只输出文件的内容.ctp。这是它的工作原理:

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

这就是渲染的工作原理,它可以将网站的布局与其所有不同的页面分开。ajax要在 cake 1.3 的布局中渲染,请使用:

$this->layout = 'ajax';

在您使用 AJAX 调用调用的控制器函数中。

于 2013-07-07T08:01:34.400 回答