我有以下代码使用版本2.3.0初始化typeahead:
jQuery('#search_terms').typeahead({
source: function(query, process) {
return jQuery.ajax({
url: '/api/path',
type: 'GET',
data: {q: query},
dataType: 'json',
success: function (json) {
return process(json.suggestion);
}
});
}
});
我已经通过替换静态数据验证了typeahead的工作原理。我已经看到json.suggestion按预期计算单个单词。 ajax响应本身看起来像这样:
{"suggestion":"word"}
但是,Bootstrap拒绝将响应加载到typeahead。我错过了什么?我承认我在通过ajax而不是在SO上找到Bootstrap Typeahead的详细文档时遇到了麻烦。
提前致谢。
答案 0 :(得分:5)
我们发现Bootstrap Typeahead使用自己的匹配过滤器来猜测我们的ajax数据。通过强制匹配为真,我们解决了这个问题:
jQuery('#search_terms').typeahead({
source: function(query, process) {
jQuery.ajax({
url: 'api/path',
type: 'GET',
data: {q: query},
dataType: 'json',
success: function (json) {
process([json.suggestion]);
}
});
},
matcher: function (param) {return true}
});