[英]How to return JSON from a CakePHP 2.2 controller?
我正在调用控制器功能:
$.get("http://localhost/universityapp/courses/listnames", function(data){
alert("Data Loaded: " + data);
});
在我的控制器中:
public function listnames() {
$data = Array(
"name" => "Sergio",
"age" => 23
);
$this->set('test', $data);
$this->render('/Elements/ajaxreturn'); // This View is declared at /Elements/ajaxreturn.ctp
}
在那个视图中:
<?php echo json_encode($asdf); ?>
但是,该操作将返回包括布局内容(页眉,页脚,导航)的整个页面。
我在这里想念什么? 如何仅返回不包含Layout内容的JSON数据?
设置autoRender=false
并返回json_encode($code)
:-
public function returningJsonData($estado_id){
$this->autoRender = false;
return json_encode($this->ModelBla->find('first',array(
'conditions'=>array('Bla.bla_child_id'=>$estado_id)
)));
}
您需要像这样禁用布局
$this->layout = null ;
现在您的动作将变为
public function listnames() {
$this->layout = null ;
$data = Array(
"name" => "Sergio",
"age" => 23
);
$this->set('test', $data);
$this->render('/Elements/ajaxreturn'); // This View is declared at /Elements/ajaxreturn.ctp
}
在手册上阅读有关JsonView的信息。
您可以尝试以下任何一种方法来返回json响应(我在这里以失败案例返回json响应):
public function action() {
$this->response->body(json_encode(array(
'success' => 0,
'message' => 'Invalid request.'
)));
$this->response->send();
$this->_stop();
}
要么
public function action() {
$this->layout = false;
$this->autoRender = false;
return json_encode(array(
'success' => 0,
'message' => 'Invalid request.'
));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.