1

我正在尝试制作一个 cakephp 应用程序,在该应用程序中我试图通过 JSON POST 请求接收一个数组,将其保存在控制器中的本地数组中,并将该数组传递给 json 视图,它可以只给出具有相同数组的 json 响应. 我在 routers.php 中添加了 mapresources 和 parseextensions。它给我一个 200ok 响应,用 POST Json 请求点击它,但它没有将数据保存在本地数组中,而且它传递了一个附加了 json 响应的整个 html 页面。这是我的控制器:

class UsersController extends AppController{

    public $components = array('RequestHandler');    
    public function index(){
     }

    public function add(){    
        if($this->request->is('post')){
       $data = $this->User->save($this->request->data);
                $this->set(array(
                'data' => $data,
                '_serialize' => array('data')
            ));
    }}}

我将 json 视图文件命名为 add.ctp。这是 /app/view/Users/JSON/add.ctp 中的 JSON 视图:

<?php
echo json_encode($data);
?>

我的表用户最初以名称、密码电子邮件等的形式保存用户数据。发生的是当我使用以下数据点击 url /localhost/FC/app/users.json 时 {{"firstname":"abcrehd","lastname ":"sdfsdf"} 它基本上是将数据存储在用户表中,而不是将其保存在本地数组中,并将用户数据+其他空列作为 json 响应传递,并附加一个长的 html 页面。我的问题是: 1. 如何将 json 响应存储在本地数组中?2. 如何将该数组传递给 json 视图?3. 如何仅在 json 响应中接收回该数组?

请帮帮我。我一直被困在这上面!谢谢 :)

4

2 回答 2

0

在我上面的好人的帮助下,我找到了答案:

$data=$this->request->input('json_decode');

这会将 post json 请求保存到名为 $data 的变量中。

$this->set(array(
                          'data' => $data,
              '_serialize' => array('data')));

正如上面所指出的,您不需要布局中的视图或视图/json 等...序列化就足够了。如果您在 url 中使用 postin 的标准 cakephp 格式,上面的代码将发回 json 响应以 .json 为后缀并使方法名称 add()

谢谢你们的帮助!

于 2013-09-16T09:04:51.500 回答
-1

如果我理解得很好:

public function add(){
if($this->request->is('post') || $this->request->is('ajax')){
    if ($this->User->save($this->request->data)) {
                 $this->layout='Ajax' ;
                 /* another actions ..... */
                 $this->set(data,$this->request->data) ; // it's no need i think it will be accessible in view!
                 $this->render('jasonView') ;
    }
}
}
于 2013-09-14T17:07:46.320 回答