我正在使用cakephp 2.0.4(在现有项目中进行更改)
我的控制器功能是..
class PagesController extends AppController {
public function getlocations($string = ''){
$this->autoRender = false;
$aResult = array(0=>'Florida', 1=>'London');
echo json_encode($aResult);
}
}
我也试过$ this-> autoLayout = $ this-> autoRender = false;
当我在浏览器mysite / app / pages / getlocations中直接调用此操作时,会出现以下错误
View file "/home/mysite/public_html/testing/app/View/Pages/g.ctp" is missing.
答案 0 :(得分:2)
创建/View/Ajax/json.ctp
视图
<?php
if(!empty($data)) echo json_encode($data);
然后在行动中:
$this->set('data', array(0=>'Florida', 1=>'London'));
$this->layout = false;
$this->render('/Ajax/json');
答案 1 :(得分:0)
你也可以按照Cake方式使它工作。
首先,您必须将以下代码添加到路径文件中:
Router::parseExtensions('json');
接下来,在控制器中将“RequestHandler”添加到组件数组中,并在getlocations函数中序列化结果:
public $components = array('RequestHandler');
public function getlocations($string = ''){
$this->set('aResult', array(0=>'Florida', 1=>'London'));
$this->set('_serialize', 'aResult');
}
最后,您可以在浏览器中看到结果 mysite / app / pages / getlocations.json
这样做CakePHP将自动添加application / json标头。
更多信息:http://book.cakephp.org/2.0/en/views/json-and-xml-views.html