Ajax-запрос в cakephp 2.x
Я пытаюсь отправить простой запрос Ajax в CakePHP. Я должен отправить запросы AJAX для многих кнопок. Но сначала я просто пытаюсь выполнить простой запрос ajax. Но это не работает по какой-то причине. Это то, что я сделал до сих пор. Это мой код
show.ctp
<?php echo $this->Html->script('jquery', FALSE); ?>
<?php
echo $this->Form->create();
echo $this->Form->input('field', array('id'=>'field'));
echo $this->Js->submit('Send', array(
'before'=>$this->Js->get('#sending')->effect('fadeIn'),
'success'=>$this->Js->get('#sending')->effect('fadeOut'),
'update'=>'#success'
));
?>
<div id='sending' style="display:none"> Counz[dot]gif will be displayed </div>
<div id='success'></div>
контроллер
var $name = 'count';
public $helpers = array('Js' => array('Jquery'));
//var $helpers = array('Ajax', 'Javascript');
var $components = array('RequestHandler');
public function show(){
if($this->RequestHandler->isAjax()){
$this->render('success', 'ajax'); //ajax tells the layout it should use
}else{
$this->set('for_map', $this->count->find('all'));
}
}
success.ctp
<p>It's working</p>
Также ajax.ctp там по умолчанию.
Пожалуйста, скажите мне, что я делаю не так. Благодарю.:)
2 ответа
Я знаю, что эта ветка очень старая, но я просто поделюсь своим ответом. Вы можете просто сделать обычный вызов ajax, например, ваш URL типа "пользователи / элементы" типа GET, а затем в вашем:
UsersController.php
public function items(){
// some logic to get items
$this->set('items',$items);
$this->layout = null; //remove default layout.
$this->render('ajax/items'); // here I use View/Users/ajax/items.ctp
}
items.ctp
//you can return json
<?php echo json_encode($items); ?>
//or
//your own format
<?php
foreach($items as $item){
//some output
}
?>
теперь этот вывод в items.ctp будет в свойстве успеха вашего js. просто убедитесь, что вы анализируете возвращенный JSON.
Лучше не публиковать сообщения при выполнении запросов ajax.
show.ctp
echo $this->Form->create('Count', array('action'=>'ajaxShow'));
контроллер
public function ajaxShow(){
$this->layout = 'ajax';
if($this->RequestHandler->isAjax()){
$this->render('success', 'ajax'); //ajax tells the layout it should use
}
}