我正在尝试创建一个cakephp应用程序,我正在尝试通过JSON POST请求接收数组,将其保存在控制器中的本地数组中,并将该数组传递给json视图,在那里它只能给出一个json响应相同的数组。 我在routers.php中添加了mapresources和parseextensions。它使用POST Json请求给我一个200ok的响应,但是它没有将数据保存在本地数组中,而且还传递了一个附加了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);
?>
我的表用户最初以名称,密码电子邮件等形式保存用户数据。当我使用以下数据{{“firstname”:“abcrehd”命中url /lhosthost/FC/app/users.json时,会发生什么事情, “姓氏”: “sdfsdf”} 它基本上将数据存储在users表中,而不是将其保存在本地数组中,并将用户数据+其他空列作为附加了长html页面的json响应传递。我的问题是: 1.如何将json响应存储在本地数组中? 2.如何将该数组传递给json视图? 3.如何在json响应中收回该数组?
请帮帮我。我一直坚持这个!谢谢:))
答案 0 :(得分:0)
我在我之上的优秀人士的帮助下找到了答案:
$data=$this->request->input('json_decode');
这会将post json请求保存到名为$ data的变量中。
$this->set(array(
'data' => $data,
'_serialize' => array('data')));
正如上面指出的标记,你不需要在布局或视图/ json等中的视图... serialize就足够了。如果你使用postin的标准cakephp格式,上面的代码将发回一个json响应在带有.json后缀的url中,并使方法名称为add()
谢谢你的帮助!
答案 1 :(得分:-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') ;
}
}
}