Hola,
estoy realizando ejemplos de uso de Ajax en Yii pero no se que pasa que ningún ejemplo me funciona, es como si no realizase las llamadas de AJAX, ni errores ni nada de nada, simplemente no pasa nada.
Me estoy basando en: http://www.yiiframework.com/doc/cookbook/24/
Tengo instalado las siguientes versiones:
Apache/2.2.13 (Win32) DAV/2 PHP/5.3.0 Yii Framework/1.0.10 contra MySQL 5.1.38.
Voy a poner ejemplo del código de 2 combos, uno depende del otro (El combo 1 es de provincias y se inicializa con los datos de BBDD y el segundo combo son los municipios según la provincia seleccionada, este es el que no hace nada).
En el controlador tengo estas dos funciones:
/**
* This is the default 'index' action that is invoked
* when an action is not explicitly requested by users.
*/
public function actionIndex()
{
//El primer combo se carga bien de los datos que recojo de BBDD.
$provincias=Provincias::model()->findAll();
$lista_provincias=CHtml::listData($provincias,'id','nombre');
$this->render('infoGeografica', array(
'lista_provincias'=>$lista_provincias,
));
}
public function actionCargarmunicipios()
{
//He comentado esta parte ya que no funcionaba y simplemente haga la carga del combo de forma estática con dos elementos.
/*
$municipios=Municipios::model()->findAll('id=:id', array(
':id'=>(int) $_POST['combo_provincias'])
);
$lista_municipios=CHtml::listData($municipios,'id','nombre');
foreach($lista_municipios as $value=>$name)
{
echo CHtml::tag('option', array('value'=>$value) ,CHtml::encode($name), true);
}
*/
CHtml::tag('option', array('value'=>'1') ,CHtml::encode('Pllano'), true);
CHtml::tag('option', array('value'=>'2') ,CHtml::encode('Ciudad Real'), true);
}
La función index es la que se carga por defecto y la segunda es la acción a la que debería llamar Ajax.
Ahora pongo la vista que tengo dentro de la carpeta correspondiente:
<h2>Información Geográfica</h2>
<?php
echo CHtml::dropDownList('combo_provincias','', $lista_provincias, array(
//'prompt'=>'Seleccione...',
'ajax' => array(
'type'=>'POST', //request type
//'url'=>'/yii/aurora/index.php?r=infoGeografica/cargarmunicipios', //url to call
'url'=>'cargarmunicipios', //url to call
'update'=>'#combo_municipios', //selector to update
//'data'=>'js:javascript statement',
//leave out the data key to pass all form values through
)
)
);
?>
<?php
//empty since it will be filled by the other dropdown
echo CHtml::dropDownList('combo_municipios','', array());
?>
También he realizado el ejemplo de Hello World (http://www.yiiframework.com/doc/cookbook/49/) y no pasa nada, no se actualiza la variable $myValue.
¿Sabéis que puede pasar? En el FireBug no veo nada ni en el Xdebug de NetBeans…
Puede que se me haya olvidado alguna cosa básica.
Saludos y gracias por adelantado.