我想在Cakephp 2.0中创建最基本的ajax链接。
在 index.ctp 我有
<?php
echo $this->Js->link('myLink', array('controller'=>'technologies', 'action'=>'view'), array('update'=>'#success'));
?>
<div id="success"></div>
TechnologiesController.php 中的
public function view(){
$this->set('msg', 'message');
$this->render('view', 'ajax');
}
并在 view.ctp 我有
<?php echo $msg;?>
不是在成功div中设置视图,而是导航到http://local.cake.com/technologies/view页面以显示消息。
非常感谢任何帮助!
答案 0 :(得分:6)
默认情况下,脚本会被缓存,您必须明确打印出缓存。要在每个页面的末尾执行此操作,请在结束标记之前包含此行:
echo $this->Js->writeBuffer(); // Write cached scripts
我在Layouts文件夹的default.ctp末尾使用它
答案 1 :(得分:1)
请务必在控制器中设置$ components = array('RequestHandler')
答案 2 :(得分:1)
所以,总的来说代码看起来像这样 - 它对我有用(CakePHP 2.2.4):
index.ctp:
<?php
echo $this->Js->link('myLink', array('controller'=>'technologies', 'action'=>'view'), array('update'=>'#success'));
?>
<div id="success"></div>
echo $this->Js->writeBuffer();
非常感谢,这有助于我理解2.0及以上版本的工作原理:)
答案 3 :(得分:0)
尝试$this->autoRender = FALSE;
答案 4 :(得分:0)
我想你可能不得不这样说:
echo $this->Js->writeBuffer();
某处 - 例如在$this->Js->link
电话正下方。
希望有所帮助!
答案 5 :(得分:0)
我刚才这样说:
echo $this->Js->writeBuffer();
它对我有用,希望我能为你服务