0

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

$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"]
4

1 回答 1

0

而不是这个

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

将其更改为

'htmlOptions'=>array('autocomplete'=>'on'),
于 2014-04-10T04:04:17.530 回答