1

ajax リクエストの後、コントローラーから 1 つの配列を応答として取得しました。ドロップダウン リストでこの配列値を使用するにはどうすればよいですか?

答え

私の見解では、私は持っています

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

    }

   }

別の問題

これで、2 番目のドロップダウン リストが 1 番目のドロップダウン リストの値と結果を表示することを除いて、すべてが機能するようになりました。

解決策:-応答を解析し、ドロップダウンリストに表示しました

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

render または renderpartial を使用して渡されなかった場合、ビューに表示されないため、コントローラーで ajax を使用して受信したデータを操作する必要があります。

于 2013-01-22T08:30:04.700 に答える