Próbuję ustawić nagłówek typu zawartości dla odpowiedzi JSON uzyskiwanej za pomocą żądania AJAX GET. Śledziłem tutoriale na blogach i w piekarni, ale zawsze otrzymuję "text/html" z CakePHP. Jak poprawnie ustawić nagłówek typu treści?Jak zwrócić prawidłowy typ zawartości dla JSON w CakePHP?
Oto mój kod w tej chwili:
public function admin_controller_actions_ajax()
{
Configure::write('debug', 0);
if ($this->RequestHandler->isGet()) {
$this->autoRender = FALSE;
$aco_id = $this->params['url']['aco_id'];
$aro_id = $this->params['url']['aro_id'];
assert('$aco_id != NULL && $aro_id != NULL &&
is_numeric($aco_id) && is_numeric($aro_id)');
$actions = $this->Resource->getActionsForController($aco_id, $aro_id);
assert('is_array($actions) && is_array($actions[0])');
/* I made RequestHandler part of the $components property */
$this->RequestHandler->setContent('json');
$this->RequestHandler->respondAs('json'); /* I've tried 'json', 'JSON', 'application/json' but none of them work */
$this->set('json_content', json_encode(array('response' => $actions[0])));
$this->layout = NULL;
$this->render('/json/default');
}
}
/* json/default.ctp */
<?php echo $json_content; ?>
Każda pomoc będzie mile widziane.
Dzięki,
- Isaac
Czy używasz Router :: parseExtensions() w pliku routes.php? Jeśli tak, musisz ustawić "debugowanie" na 0 w app/config/core.php, aby odpowiedzieć prawidłowym typem zawartości. – dhofstet
Nie, nie używam Router :: parseExtensions(), ale mimo to ustawiam debugowanie na 0 w żądaniu. –