Простой пример ajax с cakephp 2.3.0
пожалуйста, помогите мне, если кто-нибудь может дать мне пример, как использовать ajax с cakephp 2.3.0, пример похож на этот
<?php echo $this->html->link('Original', '#',
array('onclick'=>'return false;', 'id'=>'remanufactured-link', 'class'=>'get-type-product-link')); ?>
<div id="content">
</div>
когда я нажимаю ссылку original
, div с id content
изменяется. как я могу сделать это с помощью cakephp 2.3.0?
Ответы
Ответ 1
См. ниже пример:
$.ajax({
dataType: "html",
type: "POST",
evalScripts: true,
url: '<?php echo Router::url(array('controller'=>'your-controller','action'=>'your-action'));?>',
data: ({type:'original'}),
success: function (data, textStatus){
$("#div1").html(data);
}
});
Ответ 2
Не так много смысла использовать CakePHP с Ajax, чем с обычными HTML/PHP и Ajax.
Здесь приведен пример вызова и ответа ajax в приложении Cake APP:
JQuery
$.ajax({
url: '/types/fetch/original',
cache: false,
type: 'GET',
dataType: 'HTML',
success: function (data) {
$('#context').html(data);
}
});
(Не забудьте изменить параметр url, чтобы он соответствовал вашей настройке).
Это сделает запрос ajax для вашего контроллера типов и вызовет метод fetch() с параметром "original".
Ваш тип ControlController будет выглядеть примерно так:
class TypesController extends AppController {
public $components = array(
'RequestHandler'
);
public function fetch($type) {
$data = $this->Type->find('all', array(
'conditions'=>array(
'Type.type'=>$type
)
);
$this->set('data', $data);
}
}
Добавление компонента RequestHandler означает, что Cake автоматически использует минимальный макет Ajax при рендеринге ваших запросов Ajax. Обычно это добавляется в AppController, поэтому все контроллеры могут его использовать.
И соответствующий вид:
/app/View/Types/fetch.ctp
<ul>
<?php foreach($data as $item): ?>
<li><?php echo $item['Type']['name']; ?></li>
<?php endforeach; ?>
</ul>
Ответ 3
Я только начал с cakePHP и Ajax, но из того, что я собрал, это кажется более легким подходом.
С вашей точки зрения используйте:
echo $this->Js->link(
'Original',
'#',
array('async' => true,
'update' => 'content',
'id' => 'remanufactured-link'
)
);
<div id="content">
</div>
Это подразумевает несколько вещей о контроллере, с которого вы вызываете это представление (например, действие индекса будет вызвано щелчком ссылки и т.д.).
Ответ 4
Вы можете сделать с jquery/ajax
$("#remanufactured-link").click(function(){ whatyouneed.appenTo("#content"); })
whatyouneed может быть ответом данных для сообщения/получения или чего-то еще.