打开另一个视图响应ajax请求cakephp

时间:2013-01-13 00:26:52

标签: jquery ajax cakephp

我发送ajax请求将一些表单数据发布到cakephp控制器中,然后将用户移动到另一个页面以上传一些图像。这是我做的:

1-在反馈/添加控制器/动作的add.ctp视图中,我添加了javascript代码。我使用了jquery ajax并发送了表单数据

2-在反馈控制器的add动作中我编写了这段代码:

public function add() {

        if ($this->RequestHandler->isAjax()) {

//commenting the next 3 lines has no effect
$this->layout = 'ajax'; // Or $this->RequestHandler->ajaxLayout, Only use for HTML
                $this->autoLayout = false;
                $this->autoRender = false;

            $response = array('success' => false);

            $data = $this->request->input(); // MY QUESTION IS WITH THIS LINE
           // var_dump($data);

            $this->render('/Uploads/add');
            // exit();
        } else {...} 

现在我可以在firebug中看到响应为html但浏览器没有重定向。

任何人都可以告诉我wt是这里的问题??

由于

1 个答案:

答案 0 :(得分:2)

通常,当您使用此类表单提交时,您希望使用JSON。这是我们使用的jQuery的标准使用实现。

尝试开发一个好的JSON响应,http://book.cakephp.org/2.0/en/views/json-and-xml-views.html

在jQuery中等待成功的发生:

jQuery.ajax({
    url:baseUrl + '/Uploads/add',
    type:'POST',
    data: dataInModel,
    success: function(data) {
        alert('you got success!');
        console.log(data);
        //example reloading uploads:
        $('#uploads').load(baseUrl + '/Uploads/index');
    }
});

在你的成功功能中,你做任何你想做的事。因此,例如,您可以进行重新加载,重定向等。但这不是真正的ajax。如果您添加了上传,那么例如,如果您只重新加载带有上传的列表,则会像ajax一样。这是我在上面的代码示例中添加的原始示例。