Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 猎犬:Twitter Typeahead没有显示从远程/ajax获取的所有结果_Javascript_Tokenize_Typeahead.js_Twitter Typeahead_Bloodhound - Fatal编程技术网

Javascript 猎犬:Twitter Typeahead没有显示从远程/ajax获取的所有结果

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会呈现所有匹配的选项,但有时它只会显示少

我在一个非常简单的设置中使用Twitter Typeahead。它对服务器进行远程调用,以获取作为json数组的名称和标识符列表,例如:

[{"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"}]
  • 使用较新/维护的版本:自3年多以来,原始Typeahead未收到任何更新(签出)。但有一个积极维护的过程。(截至2018年)

  • 使用Identify():在设置猎犬时,您似乎没有设置
    Identify()
    选项。根据,建议使用它,以便您的基准始终是唯一的

  • 最后,交叉检查:参考中的教程,确保您没有遗漏任何内容

参考:

您确定您的ajax请求工作正常吗?分享更多的代码,你上面发布的代码对我来说非常有用。如果你在初始化typeahead的地方提供代码,这将非常有用。一个Json示例会很有用,显示了什么,还有什么你不确定当你写
时,John Sanderson显示了什么?我相信只有当你的查询匹配每个单词的开头时,你的猎犬才会匹配。猎犬匹配通过远程发送的所有内容,即使查询在结果中并不存在。@kimPrince需要更多信息,键入前版本,初始化代码,ajax url等