Boas,
Tenho duas dropdowns que preciso preencher baseadas numa escolha previamente feita noutra dropdown.
Verifiquei com o firebug que o código JSON está ser criado quando faço a chamada à função, retornado o seguinte array
{"FraccaoList":"<option value=\"1\">A<\/option><option value=\"5\">C<\/option><option value=\"16\">H<\/option><option value=\"17\">J<\/option><option value=\"13\">Z<\/option>","VistoriaList":"<option value=\"1\">120<\/option>"}
Mas o problem é que as dropdowns não são preenchidas.
Na view tenho:
echo $form->dropDownList($model, 'idCondo', CHtml::listData(Condominios::model()->findAll(), 'id', 'CondoCodigo'),
array(
'prompt'=>'Escolha um Condomínio',
'ajax' => array(
'datatype'=>'json',
'type'=>'POST', //request type
'data'=>array('idCondo'=>'js: $(this).val()'),
'url'=>CController::createUrl('dynamicVistoria'),
'success'=>'function(data) {
$("#'.CHtml::activeId($model,'idFraccao').'").html(data.FraccaoList);
$("#'.CHtml::activeId($model,'idVistoria').'").html(data.VistoriaList);
}',
)));
E no controller:
public function actionDynamicVistoria()
{
$data = Yii::app()->db->createCommand('select id, Fraccao From Fraccoes where idCondominio='.$_POST['idCondo'].' ORDER BY Fraccao ASC')->queryAll();
$data=CHtml::listData($data,'id','Fraccao');
foreach($data as $id => $value)
{
$idFraccao .= CHtml::tag('option',array('value'=>$id),CHtml::encode($value),true);
}
$data2 = Yii::app()->db->createCommand('select id, CodigoVistoria From Vistorias where idCondo='.$_POST['idCondo'].' ORDER BY CodigoVistoria ASC')->queryAll();
$data2=CHtml::listData($data2,'id','CodigoVistoria');
foreach($data2 as $id => $value)
{
$idVistoria .= CHtml::tag('option',array('value'=>$id),CHtml::encode($value),true);
}
echo $array=CJSON::encode(array(
'FraccaoList'=>$idFraccao,
'VistoriaList'=>$idVistoria
));
}
Já testei várias combinações para fazer atribuição dos resultados e nada resulta.