문제

I want to create the most basic ajax link there is in Cakephp 2.0.

In index.ctp i have

 <?php
echo $this->Js->link('myLink', array('controller'=>'technologies', 'action'=>'view'), array('update'=>'#success'));
?>
 <div id="success"></div>

in TechnologiesController.php i have

public function view(){
    $this->set('msg', 'message');
    $this->render('view', 'ajax'); 
}

and in view.ctp i have

<?php echo $msg;?>

Instead of setting the view in the success div, it navigates to the http://local.cake.com/technologies/view page to display the message.

Any help much appreciated!

도움이 되었습니까?

해결책

By default scripts are cached, and you must explicitly print out the cache. To do this at the end of each page, include this line just before the ending tag:

echo $this->Js->writeBuffer(); // Write cached scripts

I am using this at the end of my default.ctp in the Layouts Folder

다른 팁

Be sure to set $components = array('RequestHandler') in your controller

So, in total the code would look like this - and it works for me (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();

Thank you a lot, this helped me understand how things work in 2.0 and above :)

try $this->autoRender = FALSE;

I think you might have to put this:

echo $this->Js->writeBuffer();

somewhere - for example right below the $this->Js->link call.

Hope that helps!

I just put this:

echo $this->Js->writeBuffer();

it work for me, hope i will for you

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top