1

我在 Google App Engine 应用程序中使用 Bootstrap typeahead,但它不起作用。

我的 HTML:

<div class="well">
  <input type="text" class="span3" id="search" name="search"
         data-provide="typeahead" data-items="4" />
</div>
<script>  
  $('#search').typeahead({
    ajax: { url: '/SearchCity', 
    triggerLength: 1 }
 });
</script>

还有我的 Python 代码:

class SearchCity(webapp2.RequestHandler):
    def post(self):
        data = ['cat','dog','bird', 'wolf']
        data = json.dumps(data)         
        self.response.out.write(data)

为什么自动完成不起作用?这段代码有什么问题?

4

2 回答 2

2

typeahead 期望选择在一个options变量中。将您的视图转换为:

class SearchCity(webapp2.RequestHandler):
    def post(self):
        data = ['cat','dog','bird', 'wolf']
        data = json.dumps({'options': data}) #Changed line
        self.response.out.write(data)

此外,您的 HTML 可能需要进行一些更改,请尝试以下操作:

$('#id_chain').typeahead({
  minLength: 1,
  source: function (query, process) {
    return $.get('/SearchCity', function (data) {
      return process(data.options);
    });
  }
});

这里的免责声明是您没有指定您正在使用的 Bootstrap 版本......这适用于框架的 v2+。

于 2012-10-30T07:34:54.707 回答
1

正如引导程序的文档所说,这看起来更像:

function get_data_async(query, callback) {
    $.ajax({
          url: '/SearchCity/',
          data: query,
          dataType: 'json',
          type: 'POST',
          success: callback
    })
}

$('#search').typeachead({source: get_data_async})
于 2012-10-30T07:42:21.847 回答