CakePHP 1.1-如何在JSON中响应
我正在用PHP1.1开发API。我想将响应写为JSON。我发现PHP Cake 1.2或1.3有很多内容,但1.1没有 这是我的控制器代码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
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解决方案,这有助于消除对视图的需求。