您好我有一个代码在cakephp中返回一个json响应,它在localhost中完美运行,但在生产中它没有给出解析时形成的json响应。 例如,这是我的行动代码
public function deletepic(){
///configuration de l'ajax
$this->autoRender = false;
$this->request->allowMethod(array('ajax'));
$message = array('key'=>'hello');
if($this->request->is(array('ajax'))){
$picid = $this->request->data['id'];
$picname = $this->request->data['attachmentname'];
if($this->Profile->deleteAll(array('Pic.id'=>$picid,'Pic.attachment'=>$picname),false)){
$message = array('info'=>'good');
}
else{
$message = array('info'=>'bad');
}
}
$this->response->type = 'json';
return json_encode($message, JSON_PRETTY_PRINT);
}
然后它返回以下json响应:
{
"info"
我不知道造成这个问题的原因,因为相同的代码可以在本地计算机上运行
答案 0 :(得分:1)
CakePHP内置了JsonView类。你可以做类似下面的事情。
在Config / routes.php文件中,添加以下代码行:
Router::parseExtensions('json');
并按照以下方式覆盖您的代码:
public function deletepic(){
///configuration de l'ajax
$this->autoRender = false;
$this->request->allowMethod(array('ajax'));
$message = array('key'=>'hello');
if($this->request->is(array('ajax'))){
$picid = $this->request->data['id'];
$picname = $this->request->data['attachmentname'];
if($this->Profile->deleteAll(array('Pic.id'=>$picid,'Pic.attachment'=>$picname),false)){
$message = array('info'=>'good');
}
else{
$message = array('info'=>'bad');
}
}
$this->set('_serialize', $message);
}
当使用.json扩展名完成请求时,CakePHP将自动切换视图类,或者Accept标头是application / json。
了解更多信息:http://book.cakephp.org/2.0/en/views/json-and-xml-views.html