2

如何在 cakePHP json/xml 响应的末尾回显某些内容?

我需要这个来添加 JSONP 支持(因为我需要在开头添加回调和');' 在末尾

控制器使用这个:

public function json() {

     //...code to populate $jsonObjects

     $this->set('objetos',$jsonObjects);
     $this->set('_serialize', 'objetos');
}
4

1 回答 1

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);
}

我使用了类似的东西,但没有测试上面的确切示例,因此您可能需要对其进行清理。还要确保你清理了回调变量,这样你就不会因为准确地输出查询字符串参数中的内容而留下安全漏洞。

于 2012-11-27T20:41:18.287 回答