1

我的create()ProjectsController 中有一个方法,它使用 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 请求,我如何呈现我的表单?我不能设置autoRenderfalse 因为它必须呈现表单

这是处理 jax 请求的最正确方法吗?如果没有,我该怎么办?

4

1 回答 1

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() { ... }
于 2012-12-06T07:15:44.643 回答