这个让我很烦恼,希望有人能弄清楚发生了什么。
JS:
$('#search').typeahead({
source: function(typeahead, query){
$.ajax({
url: "/autocomplete_bs.php",
type: "GET",
data: "q="+query ,
dataType: "JSON",
async: true,
success: function(data){
if (data == null) {
data = '{"name":"name","url":"url"}';
}
typeahead.process(data); //If the returned object is not a null json object, THEN process it.
}
});
},
property: 'name',
items:8,
onselect: function (obj) {
window.location = obj.url;
}
});
autocomplete_bs.php位于:http://examine.com/autocomplete_bs.php?q=xxxx
您可以在此处测试自动完成:http://examine.com/(右上角)
令人难以置信的是,有些结果显示,有些则没有。
控制台未显示任何可解释此错误的错误。任何线索?
(抱歉,我的声誉太低,我忘记了其他主要登录信息,我不得不打破网址。)
答案 0 :(得分:1)
Welp,事实证明我忘了typeahead有一个matcher功能可以过滤掉它显示的内容。
所以这一行修好了它:
matcher: function () { return true; },
答案 1 :(得分:0)
examine.com/autocomplete_bs.php?q=life - 没有显示任何内容,因为返回对象中的“name”字段不包含任何“life”
它返回:
[{"name":"Stack - Anti-Aging","url":"http://examine.com/autocomplete_go.php?q=life&url=stacks/anti-aging.html"}]
换句话说,你设置Typeahead只显示 那些“name”包含实际字符串(例如'life')的结果,即使服务器返回更多项目..