php ajax多级依赖下拉列表无法正常工作(yii)

时间:2016-07-20 03:21:43

标签: php ajax yii

您好我尝试使用yii CHTML下拉列表创建多级依赖下拉列表。这是我的代码:

查看_form.php

<div class="row">
        <?php echo $form->labelEx($model,'kode_program'); ?>
        <?php echo $form->dropDownList($model,'kode_program',
            $list_prog,array(
            'prompt'=>'--Pilih--',
                'ajax' => array(
                            'type'=>'POST',
                            'url'=>CController::createUrl('OPS/loadKegiatan'),
                            'update'=>'#'.CHtml::activeId($model,'kode_kegiatan'),
                            'data'=>array('kode_program'=>'js:this.value',),                        
            ))

            ); ?>

        <?php echo $form->error($model,'kode_program'); ?>
    </div>

    <div class="row">
        <?php echo $form->labelEx($model,'kode_kegiatan'); ?>
        <?php 
        //echo $form->dropDownList($model, 'kode_kegiatan', $list_keg, array('prompt' => '--Pilih--'));
        echo $form->dropDownList($model, 'kode_kegiatan', array(),array(
            'prompt'=>'--Pilih--',
                'ajax' => array(
                            'type'=>'POST',
                            'url'=>CController::createUrl('OPS/loadOutput'),
                            'update'=>'#'.CHtml::activeId($model,'kode_output'),
                            'data'=>array(
                                'kode_kegiatan'=>'js:this.value',
                            ),                      
            )));?>
        <?php echo $form->error($model,'kode_kegiatan'); ?>
    </div>

    <div class="row">
        <?php echo $form->labelEx($model,'kode_output'); ?>
        <?php
        echo $form->dropDownList($model, 'kode_output',array(), array('prompt' => '--Pilih--'));
        ?>
        <?php echo $form->error($model,'kode_output'); ?>
    </div>

控制器OPSController.php

public function actionLoadKegiatan()
    {
        $data=KodePOK::model()->findAllByAttributes(array('kode_program'=>$_POST['kode_program']));

        $data=CHtml::listData($data,'kode_kegiatan','nama_kegiatan');
        foreach($data as $value=>$name)  {
                echo CHtml::tag('option',
                   array('value'=>$value),CHtml::encode($name),true);
    }

    }

    public function actionLoadOutput()
    {
        $data=KodePOK::model()->findAllByAttributes(array(
            //'kode_program'=>$_POST['kode_program'],
            'kode_kegiatan'=>$_POST['kode_kegiatan']
        ));

        $data=CHtml::listData($data,'kode_output','nama_output');
        foreach($data as $value=>$name)  {
                echo CHtml::tag('option',
                   array('value'=>$value),CHtml::encode($name),true);
        }

    }

上面的代码没有显示任何错误,但它不起作用,我不知道为什么。请帮我。谢谢

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题。我补充说:

echo CHtml::tag('option',array('value'=>""),"--Pilih--",true);

它有效。以下是该操作的完整代码:

public function actionLoadKegiatan()
    {
            $data=KodePOK::model()->findAllByAttributes(array('kode_program'=>$_POST['kode_program']));

            $data=CHtml::listData($data,'kode_kegiatan','nama_kegiatan');
            echo CHtml::tag('option',array('value'=>""),"--Pilih--",true);
            foreach($data as $value=>$name)  {
                    echo CHtml::tag('option',array('value'=>$value),CHtml::encode($name),true);
        }

    }