引导类型提前不适用于 ajax 响应


Bootstrap typeahead does not work with ajax response

我正在使用 Yii Booster 扩展,它将 Twitter Bootstrap 2.3.2 库包装成一个可用的 Yii 扩展。我有一个 typeahead 字段,它使用 AJAX 调用(使用 jQuery 的 ajax() 函数)获取数据。创建预键入字段的代码为:

$this->widget('bootstrap.widgets.TbTypeahead', array(
  'model'=>$expense,
  'attribute'=>'afm',
  'htmlOptions'=>array('autocomplete'=>'off'),
  'options'=>array(
    'source'=>'js:function(query, process) {
      $.ajax({url: "' . $urlAfm . '", data: {query: query}, dataType: "json" })
      .done(function(data) {
        return process(data);
      })}',
    'updater'=>'js:function(item) {
      return item;
    }',
    'highlighter'=>'js:function(item) {
      return item;
    }',
  )));

返回 JSON 数据的相应控制器操作为:

public function actionAjxGetAFM($query = '') {
  if (Yii::app()->request->isAjaxRequest && trim($query) != '') {
    $companies = Yii::app()->db->createCommand('SELECT name FROM company WHERE afm '
      . 'LIKE :match LIMIT 10')->queryColumn(array(':match'=>$query . '%'));
    Yii::trace(print_r(CJSON::encode($companies), true));
    echo CJSON::encode($companies);
    Yii::app()->end();
  }
  echo '0';
}

无论我尝试什么,输入第一个字符后都不会显示列表。我做错了什么?

来自控制器操作的 JSON 响应如下所示:

["'u039b'u03bf'u03cd'u03c1'u03b4'u03b1'u03c2 'u0392'u03b1'u03c3'u03af'u03bb'u03b5'u03b9'u03bf'u03c2","'u039c'u03bf'u03c5'u03c1'u03b1'u03c4'u03af'u03b4'u03bf'u03c5 'u039c'u03b1'u03c1'u03af'u03b1","'u03a0'u03bf'u03bb'u03c5'u03c7'u03c1'u03cc'u03bd'u03b7'u03c2 'u039b'u03bf'u03cd'u03c1'u03b4'u03b1'u03c2"]

而不是这个

'htmlOptions'=>array('autocomplete'=>'off'),

将其更改为

'htmlOptions'=>array('autocomplete'=>'on'),
相关文章: