Json数组返回生产中的cakephp

时间:2015-11-26 12:44:34

标签: php json cakephp

您好我有一个代码在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"

我不知道造成这个问题的原因,因为相同的代码可以在本地计算机上运行

1 个答案:

答案 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