2013-07-02 5 views
0

Я пытаюсь показать данные на основе ввода текста.Yii: обновить HTML после ответа ajax

Я создал Ajax с поддержкой ввода:

echo CHtml::textField("input_tracking",'',array('id'=>'input_tracking','ajax' => array(
'type' =>'POST', 
'url' => CController::createUrl('report/getTracking'), 
'update' => '#tracking_result', 
'data' => 'html' 
))); 

Но отправка пустой $ _POST. Что я делаю неправильно?

Мой код контроллера:

$data=MyModel::model()->findAll('tracking=:input_tracking', 
     array(':input_tracking'=>(int) $_POST['input_tracking'])); 

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

ответ

3

Ваш звонок ajax совершенно не прав. Вы не передаете данные контроллеру, поэтому POST пуст. Должно быть следующим:

  'ajax' => array(
      'type' => 'POST', 
      'url'=>$this->createUrl('report/getTracking'), 
      'update' => '#tracking_result',       
      'data'=>array('input_tracking'=>'js:this.value',), 
//If this wont work replace update with success function   
    'success'=> 'function(data) {            
     $("#tracking_result").empty(); 
     $("#tracking_result").append(data); 

      } ', 

     ))); 

Ваш контроллер в порядке. Надеюсь, это было полезно.

+0

Вы правы. Это решение работает очень хорошо – PsychoX

0

Можете ли вы попробовать его без индекса массива «данными» и сказать нам, что происходит?

Вы можете взглянуть на эту вики, чтобы выполнить что-то вроде того, что вы пытаетесь сделать. http://www.yiiframework.com/wiki/24/

Смежные вопросы