CakePHP 1.1-如何在JSON中响应

CakePHP 1.1-如何在JSON中响应,php,cakephp,Php,Cakephp,我正在用PHP1.1开发API。我想将响应写为JSON。我发现PHP Cake 1.2或1.3有很多内容,但1.1没有 这是我的控制器代码 function index() { $this->layout = 'ajax'; $this->RequestHandler->setContent('json', 'application/json'); $members['id'] = '001100'; $this->set(comp

我正在用PHP1.1开发API。我想将响应写为JSON。我发现PHP Cake 1.2或1.3有很多内容,但1.1没有

这是我的控制器代码

function index() {
   $this->layout = 'ajax';
   $this->RequestHandler->setContent('json', 'application/json');
   $members['id'] = '001100';        
   $this->set(compact('members'));    
}
这是查看代码

echo json_encode($members)

我的问题是,响应内容类型仍然是
内容类型:text/html

有没有什么方法不必为每个函数创建视图,只需编写
json

请帮帮我

谢谢,
Adil

我不确定我是否100%理解了这个问题,但如果您只是想用JSON字符串输出一些内容,请查看以下链接:

试试这个:

function index() {
   $this->autoRender = false;
   /**
     * leave this two lines
     *
     * $this->layout = 'ajax';  // leave it
     * $this->RequestHandler->setContent('json', 'application/json'); 
     *
     */

   // your process to get $members
   $members['id'] = '001100';        
   $this->set('members');    
}

因为您的视图代码很好。

在CakePHP 1.2中,如果您将autoRender设置为false并从控制器操作返回一个值,它将直接输出。您可能需要指定一种内容类型

function index() {
    $this->autoRender = false;
    $this->RequestHandler->respondAs('json'); // or $this->RequestHandler->respondAs('application/json'); if json is not set up with CakePHP 1.1
    $members['id'] = '001100';        
    return json_encode($members);    
}
我无法立即访问CakePHP 1.1代码库,因此您可能需要检查dispatcher.php,特别是_invoke()方法,以确保在autoRender设置为false时返回操作

我强烈建议升级到CakePHP2.1,其中包括一个JsonView,可用于提供json响应

function index() {
    $this->view = 'Json';
    $members['id'] = '001100';
    $this->set(compact('members'));        
    $this->set('_serialize', array('members'));    
}

为什么升级到2.1不是一个选项?如果您开始开发这个API,1.1可能是您可能使用的最差版本(从那时起有了很大的改进,尤其是在这个领域)。升级将是我的建议。实际上,我的网站已经用cakephp 1.1开发,升级到2.1是个不错的选择。谢谢你的回复,让我具体一点。这是我的控制器代码函数索引(){$this->layout='ajax';$this->RequestHandler->setContent('json','application/json');$members['id']='001100';$this->set(compact('members');}这是视图代码我的问题是,响应内容类型仍然是content-type:text/htmlNice解决方案,这有助于消除对视图的需求。