我对Yii中的Controller方法AJAX调用有一点问题。问题是我正在尝试根据前一个选定项的值过滤一个dropDownList的数据。
在视图文件中,我想出的是问题的根源,我有这段代码:
<?php echo $form->labelEx($model,'Estado'); ?>
<?php echo $form->dropDownList($model,'estado',CHtml::listData(Estado::model()->findAll(),'id','nombre'),array(
'ajax'=>array(
'type'=>'POST',
'url'=>CController::createAbsoluteUrl('buscar/select'),
'update'=>'#'.CHtml::activeId($model,'tbl_municipio_id'),
),
'class'=>'form-control'
));
?>
<?php echo $form->error($model,'Estado'); ?>
在控制器方面,我得到了这个:
public function actionSelect(){
echo "Hello world";
$data = Municipio::model()->findAll('tbl_estado_id=:tbl_estado_id',
array(':tbl_estado_id'=>(int) $_POST['Consultorio_estado']));
$data = CHtml::listData($data,'id','name');
foreach($data as $value=>$name)
{
echo CHtml::tag('option',
array('value'=>$value),CHtml::encode($name),true);
}
单击dropDownList时,不会触发对Select方法的ajax调用。我使用Firebug跟踪请求,没有错误也没有失败消息。
任何人都知道我该怎么做?。
提前致谢。
答案 0 :(得分:0)
根据我对Yii 1.1.13
的了解,ajax
form->dropDownList
没有Chtml::dropDownList
这样的选项,只有form->dropDownList
。{/ p>
因此,您可以选择手动自定义事件更改Chtml::dropDownList
或添加更多jQuery脚本来自行处理,或者只需切换到使用 <?php
echo CHtml::dropDownList('inst_province','',
array(1=>'A',2=>'B',3=>'C', 4=>'D'),
array(
'prompt'=>'Select City',
'ajax' => array(
'type'=>'POST',
'url'=>CController::createUrl('city/selectAll'),
'update'=>'#city_area',
'data'=>array('city_param'=>'js:this.value'),
)));
?>
,如下例所示
{{1}}
http://www.yiiframework.com/wiki/429/an-easy-solution-for-dependent-dropdownlist-using-ajax/