1

在一个 ajax 请求之后,我从我的控制器获得了一个数组作为响应,我如何在我的下拉列表中使用这个数组值?

回答

在我看来我有

echo CHtml::dropDownList('client_id', '',CHtml::listData($model,'client_id','client_name'), array(
'ajax'=> array(
'type'=>'POST',
'url'=>Yii::app()->baseUrl.'/index.php?r=page/dynamicDropdownList',
'update'=>'#program_id',
'empty'=>'-Select a Client-')));

// I need to populate the response array in this dropdownlist
echo CHtml::dropDownList('program_id','', CHtml::listData($result,'program_id', 'program_name'));

在我的控制器中

 public function actionDynamicDropdownList()
 {

    if($_POST['client_id'] > '0') {
        $result = Yii::app()->db->createCommand()->select('program_id, program_name')->from('program')->where('client_id='.$_POST['client_id'].'')->order('program_name')->queryAll();
        $this->render('admin', array(
            'result' => $result,
        ));

    }

   }

另一个问题

现在,除了第二个下拉列表还显示了第一个下拉列表的值和结果之外,我一切都正常了。

解决方案:- 我已解析响应并将其显示在下拉列表中

4

1 回答 1

1

这是您的控制器的外观:

public function actionIndex() {

        $model = new SearchForm();
        if ($_GET['SearchForm']) {
            $model->attributes = $_GET['SearchForm'];
        }

//here is where you put your criteria or query commands

        if ($_GET['ajax']) {
            $this->renderPartial('index', array(
                'model' => $model,
            ));
        } else {

            $this->render('index', array(
                'model' => $model,
            ));
        }
    }

你从 ajax 或 GET 中捕获数据,然后用它做一些事情,然后将数据传递给视图;

这应该是 vies 包含的内容:

<? echo $form->dropDownList($model, 'position_type', CHtml::listData(PositionType::model()->findAll(array('condition' => 'status=1')), 'id', 'name'), array('class' => 'postdropdown2', 'empty' => array(-1 => 'All'), 'onchange' => 'showDiv(this.value,1);')); ?>

您必须处理在控制器中使用 ajax 接收的数据,因为它在视图中不可见,如果它没有使用 render 或 renderpartial 传递

于 2013-01-22T08:30:04.700 回答