如何在cakePHP json / xml响应结束时回显一些内容?
我需要这个才能添加JSONP支持(因为我需要在开头添加回调和');'最后
控制器使用:
public function json() {
//...code to populate $jsonObjects
$this->set('objetos',$jsonObjects);
$this->set('_serialize', 'objetos');
}
答案 0 :(得分:4)
首先,我假设您已设置路由以正确处理JSON / XML响应
在路线档案中:
Router::parseExtensions('json');
其次,您需要确保对您的示例的调用使用.json
扩展名,或者Accept标题为application/json
然后检查控制器中的回调
public function json() {
//...code to populate $jsonObjects
// check for callback and set it
// note: you should do Sanitize::clean() or something like that to
// prevent code injection
if ($this->request->params['callback']) {
$this->set('callback', $this->request->params['callback']);
}
$this->set('objetos',$jsonObjects);
$this->set('_serialize', 'objetos');
}
你的视图文件中的(例如:View / Users / json / index.ctp)你应该有这样的东西:
if (isset($callback)) {
echo $callback . '('.json_encode($objetos).')';
} else {
echo json_encode($objetos);
}
我使用类似的东西,但没有测试上面的确切示例,所以你可能需要清理它。还要确保清理回调var,这样就不会通过输出查询字符串参数中的确切内容来保留安全漏洞。