まず、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);
}
私は似たようなものを使用していますが、上記の正確な例をテストしていないので、クリーンアップする必要があるかもしれません. また、コールバック変数をクリーンアップして、クエリ文字列パラメーターの内容を正確に出力してセキュリティ ホールを残さないようにしてください。