cakephp-2.0 простейшая ajax-ссылка с jshelper - PullRequest
4 голосов
/ 30 марта 2012

Я хочу создать самую простую ссылку ajax, которая есть в Cakephp 2.0.

In index.ctp У меня есть

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

in 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 для отображения сообщения.

Любая помощь высоко ценится!

Ответы [ 6 ]

6 голосов
/ 20 декабря 2012

По умолчанию скрипты кэшируются, и вы должны явно распечатать кеш. Чтобы сделать это в конце каждой страницы, добавьте эту строку непосредственно перед конечным тегом:

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

Я использую это в конце моего default.ctp в папке Layouts

1 голос
/ 06 января 2013

Итак, в целом код будет выглядеть так - и он работает для меня (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 и выше:)

1 голос
/ 30 марта 2012

Обязательно установите $ components = array ('RequestHandler') в вашем контроллере

0 голосов
/ 01 августа 2013

Я просто положил это:

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

это работает для меня, надеюсь, я буду для вас

0 голосов
/ 11 апреля 2012

Я думаю, вам, возможно, придется поместить это:

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

где-нибудь - например, прямо под вызовом $this->Js->link.

Надеюсь, это поможет!

0 голосов
/ 30 марта 2012

попробуй $this->autoRender = FALSE;

...