2013-01-13 48 views
0

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

1-在反馈/添加控制器/动作的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 {...} 

现在我可以看到为HTML在Firebug的响应,但浏览器不重定向。

任何一个可以告诉我wt是这里的问题??

谢谢

+0

逻辑有瑕疵。 AJAX不会导致浏览器重定向。你将不得不使用JavaScript重定向基于来自服务器的响应消息 – charlietfl

回答

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一样,如果你只用上传重新加载列表。这是我在上面的代码示例中添加的一个原始示例。