0

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

1-在 feedbacks/add controller/action 的 add.ctp 视图中,我添加了 javascript 代码。我使用了 jquery ajax 并发送了表单数据

2-在反馈控制器的添加操作中,我编写了以下代码:

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,但浏览器不会重定向。

谁能告诉我这里的问题是什么?

谢谢

4

1 回答 1

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。这是我在上面的代码示例中添加的原始示例。

于 2013-01-13T11:59:57.727 回答