Javascript 猎犬:Twitter Typeahead没有显示从远程/ajax获取的所有结果
我在一个非常简单的设置中使用Twitter Typeahead。它对服务器进行远程调用,以获取作为json数组的名称和标识符列表,例如:Javascript 猎犬:Twitter Typeahead没有显示从远程/ajax获取的所有结果,javascript,tokenize,typeahead.js,twitter-typeahead,bloodhound,Javascript,Tokenize,Typeahead.js,Twitter Typeahead,Bloodhound,我在一个非常简单的设置中使用Twitter Typeahead。它对服务器进行远程调用,以获取作为json数组的名称和标识符列表,例如: [{"value":"Declan Strosin","data":"b2c9d118-2e7a-4516-bc50-5505cbfcc834"},{"value":"Jany Legros","data":"d8b53d8c-d952-4fed-bc22-5932094abca1"}] 问题是,有时Typeahead会呈现所有匹配的选项,但有时它只会显示少
[{"value":"Declan Strosin","data":"b2c9d118-2e7a-4516-bc50-5505cbfcc834"},{"value":"Jany Legros","data":"d8b53d8c-d952-4fed-bc22-5932094abca1"}]
问题是,有时Typeahead会呈现所有匹配的选项,但有时它只会显示少数选项。它决定呈现的内容似乎没有任何押韵或理由
例如,我可能键入“and”,然后从服务器收到一个包含10个用户的列表,这些用户的名字像“Sandy Blogs”、“Andrew Blogs”、“John Sanderson”等等,它将列出所有10个用户。正确的3个字母也会高亮显示
然而,对于其他搜索,“ros”、“dan”等,它可能会撤回10个用户,但只呈现两三个
我怀疑问题出在我的猎犬数据标记器上,但我真的不知道该怎么办。这是我的猎犬设置
return new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
url: url + '?term=%QUERY',
wildcard: '%QUERY'
}
});
我读过这篇文章,但还是不明白
编辑:我现在遇到过这样的情况:从服务器上撤回10个或更多条目,但Typeahead没有呈现任何内容。您的代码非常好,没有问题。猎犬对猎犬建议的限制设置有问题。您可以查看问题详细信息 目前我不能说是什么导致了这个问题,因为尝试不同的结果列表组合,对我来说没有任何意义 但目前最快的解决办法是将限制设置为20,而且效果很好。希望开发商尽快解决这个问题。在那之前,这是你最好的选择
return new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
limit: 20,
remote: {
url: url + '?term=%QUERY',
wildcard: '%QUERY'
}
});
您的代码似乎没有问题。您可以尝试以下操作:
[{"value":"Declan Strosin","data":"b2c9d118-2e7a-4516-bc50-5505cbfcc834"},{"value":"Jany Legros","data":"d8b53d8c-d952-4fed-bc22-5932094abca1"}]
- 使用较新/维护的版本
Identify()
选项。根据,建议使用它,以便您的基准始终是唯一的您确定您的ajax请求工作正常吗?分享更多的代码,你上面发布的代码对我来说非常有用。如果你在初始化typeahead的地方提供代码,这将非常有用。一个Json示例会很有用,显示了什么,还有什么你不确定当你写
和时,John Sanderson显示了什么?我相信只有当你的查询匹配每个单词的开头时,你的猎犬才会匹配。猎犬匹配通过远程发送的所有内容,即使查询在结果中并不存在。@kimPrince需要更多信息,键入前版本,初始化代码,ajax url等