我的ProjectsController中有create()
方法,它使用AJAX呈现表单并保存数据:
class ProjectsController extends AppController
{
public function create()
{
if ($this->request->is('post'))
{
$this->Project->create();
$this->request->data['Project']['created_by'] = $this->Auth->user('id');
if ($this->Project->save($this->request->data))
{
...
} else {
...
}
}
}
如果数据被保存,我如何传递成功消息,如果不是ajax请求,我还可以呈现我的表单?我无法设置autoRender
false'因为它必须呈现表单
这是处理jax请求的最正确方法吗?如果没有我该怎么办?
答案 0 :(得分:1)
检测AJAX:
您可以使用:
if($this->request->is('ajax')) {
用ajax做任何你喜欢的事情,以及其余的显而易见的“其他”。
处理它:
可能是这样的:
if ($this->request->is('ajax')) {
//process the ajax response
$this->render('/Ajax/json');
} else {
if($this->request->is('post')) {
//process the post
}
//set variables for the view...etc etc
}
另一种选择 - 单独的功能:
或者,只有两个不同的动作也是相当普遍的 - 一个用于ajax,另一个用于你想要的任何其他动作。这是我喜欢它的方式,因为我宁愿不让if()全部阻塞。但是 - 对于他们自己,我看到两者都经常使用。
public function create_ajax() { ... }
public function create() { ... }