yii:使用Ajax和jQuery添加TextField过滤器



我是YII初学者,我目前正在努力向ClistView添加AJAX过滤器,在此我遵循此教程中显示的步骤

基本上,当我在更改后的issueController/index操作中插入$ essue_nr时,过滤器的工作原理,但是由于某种原因,$ _get变量并未通过提交按钮传递!

我已经搜寻了一段时间,这让我发疯了,因为我觉得我错过了一个非常简单的步骤!

任何类型的帮助或建议都深受赞赏!

我的索引动作是:

public function actionIndex($issue_nr=NULL)
    {     
    $criteria = new CDbCriteria();
    if (strlen($issue_nr) > 0)
        $criteria->addSearchCondition('issue_nr_fk', $issue_nr, true);
    $dataProvider = new CActiveDataProvider('Issue', array('criteria' => $criteria,));
    $this->render('index', array('dataProvider' => $dataProvider));
    }

和视图/问题/索引

     <div class="row">
<?php
  echo CHtml::beginForm(CHtml::normalizeUrl(array('Issue/index')), 'get', array('id'=>'filter-form'))
  . CHtml::textField('string', (isset($_GET['string'])) ? $_GET['string'] : '', array('id'=>'issue_nr'))
  . CHtml::submitButton('Search', array('submit' => array('Issue/index', 'id'=>$_GET['string'])))
  . CHtml::endForm();
 //JQUERY FUNCTION TO REDUCE DBQUERIES
 Yii::app()->clientScript->registerScript('search',
      "var ajaxUpdateTimeout;
       var ajaxRequest;
       $('input#issue_nr_fk').keyup(function(){
       ajaxRequest = $(this).serialize();
       clearTimeout(ajaxUpdateTimeout);
       ajaxUpdateTimeout = setTimeout(function () {
       $.fn.yiiListView.update(
    // this is the id of the CListView
       'ajaxListView',
       {data: ajaxRequest}
       )
      },
    // this is the delay
         300);
        });"
       );
     ?>
 </div>
 <?php
    $this->widget('zii.widgets.CListView', array(
    'dataProvider' => $dataProvider,
    'itemView' => '_view',
    'sortableAttributes'=>array('issue_nr_fk',
    'c_date'),
    'id'=>'ajaxListView',
     ));
 ?>

如果我正确理解您,则将表单操作设置为" chtml :: normalizeUrl(array('dessove/index')"没有任何"获取"参数,这就是为什么您不喜欢t在控制器中接收它们。使用一个空字符串进行操作 - 表单将提交给当前页面URL,并使用所有参数。

最新更新