kolyafat
@kolyafat

Избитый вопрос — ajax+CHtml::dropDownList, не получается пожалуйста?

Доброго всем здравия, пожалуйста помогите разобраться с отправкой POST селектом через ajax. Вот код:
echo CHtml::dropDownList('listname', 'bla',
              $model,
        array('empty' => 'Марка авто',
              'style'=>'width:155px',
              'class'=>'btn btn-default dropdown-toggle',
              'ajax' => array(
                        'type'   => 'POST',
                        'url'    => CController::createUrl('site/getMod'),
                        //'data'=> array(
                         //   'id'=>'js:this.value',
                         //   'YII_CSRF_TOKEN' => Yii::app()->request->csrfToken),
                        'update' => '#sub_cat_id',),
            
            ));

Это во вьюхе. Контроллер не важен, нужно просто чтоб запрос site/getMod хоть что-то возвращал. Как это организовать, помогите пожалуйста, задание на Yii, раньше на нем очень мало чего делал.
public function actionGetMod()
	{         
            $ff = array();
                      return $ff;            
	}

Вот сюда запрос летит, при попытке вставить входные значения actionGetMod($id)
появляется bad request 400, где я туплю, помогите.
<div  id="sub_cat_id">
     <?php    print_r($ff);      ?>
    </div>

я так понимаю здесь должен обновляться результат, но ничего не происходит, ошибки тоже нет ОК200. Заранее спасибо сочувствующим.
  • Вопрос задан
  • 260 просмотров
Пригласить эксперта
Ответы на вопрос 2
@heahoh
Full stackoverflow developer
Вы в GET передаёте id?
Ответ написан
kolyafat
@kolyafat Автор вопроса
В общем долго я буду курить всевозможные писания, есть думки в направлении CHtml::$liveEvents = FALSE; но толку мало, не айс у меня и с JavaScript, получается следующая ересь, которую я никак не ожидал от себя и от моей Yiiшницы:
Первый селект у меня во вью и с ним проблем нет
CHtml::$liveEvents = FALSE;
echo CHtml::dropDownList('listname', 'bla',
              $model,
        array('empty' => 'Марка авто',
              'style'=>'width:auto',
              'class'=>'btn btn-default dropdown-toggle',
              'ajax' => array(
                        'type'   => 'POST',
                        'url'    => CController::createUrl('site/getMod'),
                        'data'=> array(
                            'id'=>'js:this.value',
                            'YII_CSRF_TOKEN' => Yii::app()->request->csrfToken),
                        'update' => '#sub_cat_id',                  
                  ),
            
            ));


Он при выборе отправляет ajax который в свою очередь возвращает второй селект
public function actionGetMod()
	{
	CHtml::$liveEvents = FALSE;
       if(Yii::app()->request->isAjaxRequest){
        if(isset($_POST['id'])){
            $f= Mod::getModelData($_POST['id']);
            echo CHtml::dropDownList('modelky', 'mode',
              $f,
       array( 'empty' => 'Модель авто',
             'style'=>'width:155px',
              'class'=>'btn btn-default dropdown-toggle',
              'ajax' => array(
                        'type'   => 'POST',
                        'url'    => CController::createUrl('site/getVar'),
                        'data'=> array(
                        'id_v'=>'js:this.value',
                        'YII_CSRF_TOKEN' => Yii::app()->request->csrfToken),
                        'update' => '#var',
                   'succes' => 'function(){$("#var").change();}',
                  ),
           
           ));  
            
        }           
	}
        }

Возвращается, отображается, только вот этот селект ajax уже не отправляет, а так хочется.
Пожалуйста, знающие люди, 100% сталкивались с супервиджетами Yii, помогите, по JS ибо у меня двойка. В коде страницы после первого ajax вот
/*<![CDATA[*/
jQuery(function($) {
jQuery('#listname').on('change', function(){jQuery.ajax({'type':'POST','url':'/site/getMod','data':{'id':this.value,'YII_CSRF_TOKEN':'d02ef985c3400d717ee866ede2af6610af42b446'},'cache':false,'success':function(html){jQuery("#sub_cat_id").html(html)}});return false;});
});
/*]]>*/
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы