将 CakePHP 与 Ajax 一起使用与普通的 HTML/PHP 和 Ajax 并没有太大区别。
下面是一个 Cake APP 中的 ajax 调用和响应示例:
jQuery:
$.ajax({
url: '/types/fetch/original',
cache: false,
type: 'GET',
dataType: 'HTML',
success: function (data) {
$('#context').html(data);
}
});
(不要忘记更改 url 参数以匹配您的设置)。
这将向您的 Types 控制器发出 ajax 请求,并使用参数“original”调用方法 fetch()。
你的 TypesController 看起来像这样:
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 中添加的,因此所有 Controller 都可以使用它。
以及相关的视图:
/app/View/Types/fetch.ctp
<ul>
<?php foreach($data as $item): ?>
<li><?php echo $item['Type']['name']; ?></li>
<?php endforeach; ?>
</ul>