0

我对 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 跟踪了请求,没有错误也没有失败消息被丢弃。

有谁知道我能做什么?

提前致谢。

4

1 回答 1

0

With my knowledge in Yii 1.1.13, there is no such option for ajax for form->dropDownList, just Chtml::dropDownList does.

Therefore you have option to manually custom event change of form->dropDownList or add more jQuery script to handle it by yourself, or simply switch to use Chtml::dropDownList like below example

 <?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'),
            )));
    ?>

http://www.yiiframework.com/wiki/429/an-easy-solution-for-dependent-dropdownlist-using-ajax/

于 2013-08-25T13:57:13.323 回答