Ha! chopite.
Específicamente cual es el problema?.
logras imprimir el objeto JSON desde la vista de cake y luego recibes ese objeto en la lógica JavaScript.
veraz notaras que al enviar un objeto anidado a cake, este no lo reconocerá. es decir no estará disponible en:
$this->request->query ó $this->request->data
realiza un debug sobre $this->request luego de la solicitud ajax.
cake acepta objetos simple como {"key":"value","key":"value"} , el objeto estarán disponible como un array en $this->request->query o data.
de enviar un objeto anidado a cake, data o query serán nulos.
A diferencia que desde cake si puedes enviar un objeto anidado al JavaScript
Para enviar objetos JSON al JavaScript:
function getPaises(){
$paises = $this->Pais->find(
'all',
array(
'fields'=>array(
'Pais.id',
'Pais.nombre'
)
)
);
$this->set('return',$paises);
$this->render('getPaises','ajax'); // estas usando el layout ajax (View/Layouts/ajax.ctp) para mostrar la vista get_paises.ctp
}
en /View/{Controller}/get_paises.ctp , solo este código:
<?php
if(isset($return)){
echo json_encode($return);
}
?>
en este punto debes contar con un objeto JSON disponible en el js
Normalmente cuando estoy trabajado con una solicitud ajax lo que trae, lo imprimo en el dom:
<div id="debug"><div>
Esto me permite ver los errores que suceden en el codigo php. por que aveces no siempre recibo un objeto json
ajaxRequest = function(obj,action){
var config = {
method:'get',
parameters:obj,
insertion:'bottom',
onSuccess: resetForm()
}
new Ajax.Updater('debug',action,config)
}
Ya que al usar un new Ajax.Request no puedo ver si existe un error al nivel del php.
Yo se usas Jquery, mas o menos hay tiene una idea de hacer debug del código.
saludos.