2014-02-13 3 views
0

У меня проблема с YII с ajax. Я использовал this link как exaple для тестирования ajax в моем проекте с зависимыми раскрывающимися списками.Yii ajax загружает целую страницу вместо моего вывода

Код формы (защищенный/вид/игры/_form.php):

<?php 
    echo $form->dropDownList($model, 'season_id', Season::getSeasonsList(), array(
     'ajax' => array(
      'type'=>'POST', 
      CController::createUrl('Game/selectGameStages'), 
      'update'=>'#Game_season_game_stage' 
      ) 
     ) 
    ); 
?> 

код контроллера (защищенный/Controller/GameController.php):

public function actionSelectGameStages() 
{ 
    echo CHtml::tag('option', array('value'=>'1'), 'Some output 1', true);   
    echo CHtml::tag('option', array('value'=>'2'), 'Some output 2', true);   
    echo CHtml::tag('option', array('value'=>'3'), 'Some output 3', true);   
} 

Ajax работает, но с отладчик, если был создан этот код, помещенный в мой вариант Game_season_game_stage, является html-кодом всей страницы моего сайта, например

<select name="Game[season_game_stage] id="Game_season_game_stage"> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
    ... 
    <div class="container" id="page">...</div> 

Пожалуйста, помогите понять, почему весь код страницы загружен вместо кода из моей функции selectGameStages? Yii версия 1.14. Извините за мой английский. Спасибо.

+0

, пожалуйста, добавьте код, который требуется обновить. –

+0

Второй элемент в вашем массиве ajax не является ключом => пара значений –

ответ

0

Спасибо за все ответы! Я нашел решение.

в защищенном/просмотров/игры/_form.php я пропустил ключ 'URL' и переименованный игры/selectGameStages

<?php 
    echo $form->dropDownList($model, 'season_id', Season::getSeasonsList(), array(
     'ajax' => array(
      'type'=>'POST', 
      'url' => CController::createUrl('game/selectGameStages'), 
      'update'=>'#Game_season_game_stage' 
      ) 
     ) 
    ); 
?> 

после того как я обновил код контроллера (защищенный/Controller/GameController.php) с этим код

public function accessRules() 
    { 
     return array(
      array('allow', // allow all users to perform 'index' and 'view' actions 
       'actions'=>array('index','view', 'selectGameStages'), 
       'users'=>array('*'), 

Спасибо за помощь!

0

Просто выйдите после выхода.

public function actionSelectGameStages() 
{ 
    // Do stuff 
    ... 

    exit; 
} 
+0

thx, но не работает, все равно ajax загружает всю страницу. – user3307815

+0

Пожалуйста, разместите вывод HTML, который появляется между '

...
' –

0

Почему noy use dropDownList и непосредственно на виду?

es.

<?php echo CHtml::dropDownList('listname', $select, 
       array('M' => 'Male', 'F' => 'Female'), 
       array('empty' => '(Select a gender)')); 

http://www.yiiframework.com/wiki/48/by-example-chtml/#hh5

+0

Мне нужно сгенерировать параметры из другой таблицы, зависящие от выбранного значения, из первого раскрывающегося списка – user3307815

0

Вся ваша страница загружается из-за свое расположение,

в чеке контроллера, если этот вызов, является Ajax вызова, измените макет какой-то макет без этих тегов, или лучше создать макет для Ajax звонков ,

if($this->getIsAjaxRequest()) 
     $this->layout = '//ajax'; // ajax layout 
Смежные вопросы