CakePHP 中的 JSON 响应采用不正确的值



我正在尝试制作一个 cakephp 应用程序,我试图通过 JSON POST 请求接收数组,将其保存在控制器中的本地数组中并将该数组传递给 json 视图,在那里它可以给出具有相同数组的 json 响应。我在路由器中添加了地图资源和解析扩展.php。它给了我一个 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 响应中接收回该数组?

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

我在上面的好人的帮助下想通了,他们引导我找到了答案:

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

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

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

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

谢谢你们的帮助!

如果我理解得很好:

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') ;
    }
}
}

最新更新