Javascript 为什么Twitter的typeahead.js不能与我的JSON一起工作? 更新:

Javascript 为什么Twitter的typeahead.js不能与我的JSON一起工作? 更新:,javascript,jquery,twitter,typeahead.js,twitter-typeahead,Javascript,Jquery,Twitter,Typeahead.js,Twitter Typeahead,这可能是一个编码问题,但我不太确定如何解决它。如果我在Sublime Text 3中打开nba2.json,请转到控制台并键入view.encoding我未定义虽然状态栏中显示UTF-8以在ST3的状态栏中显示编码,但您必须将show_encoding:true添加到您的用户首选项中 通过对ktb.json执行相同的操作,我在控制台和状态栏中都会得到UTF-8 原职: 你好 我正在尝试将Twitter集成到我的web应用程序中。我跟着火车走,一切都很顺利 然后,我尝试使用自己的数据源,以示例为基

这可能是一个编码问题,但我不太确定如何解决它。如果我在Sublime Text 3中打开nba2.json,请转到控制台并键入view.encoding我未定义虽然状态栏中显示UTF-8以在ST3的状态栏中显示编码,但您必须将show_encoding:true添加到您的用户首选项中

通过对ktb.json执行相同的操作,我在控制台和状态栏中都会得到UTF-8

原职: 你好

我正在尝试将Twitter集成到我的web应用程序中。我跟着火车走,一切都很顺利

然后,我尝试使用自己的数据源,以示例为基础

我以一种我认为应该有效的方式修改了这些示例,稍后我将开始编写我的代码,但显然没有成功。因此我请求你的帮助

我从以下代码开始:

var nbaTeams=新猎犬{ datumTokenizer:Hound.tokenizers.obj.空白“团队”, queryTokenizer:猎犬,标记,空白, 预回迁:“../testData/nba.json” }; nbaTeams.initialize; $'multi-dataset.typeahead'。typeahead{ 推荐理由:没错 }, { 名称:“nba球队”, displayKey:'团队', 资料来源:nbaTeams.ttAdapter, 模板:{ 标题:“NBA球队” } }; 注意,我从中获取了nba.json文件

如图所示,这一尝试非常成功:

然后,我修改了nba.json文件,如下所示:为了便于阅读,我缩短了列表:

[ { 球队:波士顿凯尔特人队, 测试:1 }, { 球队:达拉斯小牛队, 测试:两个 }, { 球队:布鲁克林网队, 测试:三个 }, { 球队:休斯顿火箭队, 测试:四个 } ] 我做了这些更改,因为这些示例只处理只有一个属性的JavaScript对象,但我打算使用的对象由许多属性组成,您将在稍后看到

我相应地更改了上面的代码:

var nbaTeams=新猎犬{ datumTokenizer:Hound.tokenizers.obj.空白“团队”, queryTokenizer:猎犬,标记,空白, 预回迁:“../testData/nba2.json” }; nbaTeams.initialize; $'multi-dataset.typeahead'。typeahead{ 推荐理由:没错 }, { 名称:“nba球队”, displayKey:'测试', 资料来源:nbaTeams.ttAdapter, 模板:{ 标题:“NBA球队” } }; 如您所见,我将displayKey的值更改为test,以便在建议框中显示新字段。与以前一样,这项工作做得非常好:

现在,我使用的数据源又是这样的,为了可读性而缩短:

[ { ktb_be:1213, ktb_Bezeichung:ktb Amberg Sulzbach, 巴努默:962100, 姓名:Amberg Oberpf。, ursprungs\U be:2-008-1013, 乌尔斯佩斯:安伯格, 塞滕扎尔:182, lon:11.84603545968802, 拉脱维亚:49.454826399610624, dLon:11.84603545968802, dLat:49.454826399610624 }, { ktb_be:1213, ktb_Bezeichung:ktb Amberg Sulzbach, 巴努默:962802, 姓名:阿默塔尔, ursprungs\U be:2-008-1013, 乌尔斯佩斯:安伯格, 塞滕扎尔:8, 伦敦:11.766274528840961, 纬度:49.44355586068654, 电话:11.766274528840961, dLat:49.44355586068654 } ] 因此,我继续并再次更改代码以适应数据:

var books=新猎犬{ datumTokenizer:Hound.tokenizers.obj.空格'ktb_be', queryTokenizer:猎犬,标记,空白, 预回迁:“../testData/ktb.json” }; 书籍。初始化; $'multi-dataset.typeahead'。typeahead{ 推荐理由:没错 }, { 名称:'书籍', 显示键:“ktb_bezeichung”, 来源:books.ttAdapter, 模板:{ 标题:“书籍” } }; 这不起作用也就不足为奇了,否则我就不会写这个问题了。结果如下:

我可以保证ktb.json文件就是它应该在的地方

我的猜测是,我遗漏了一些关键的东西,但由于它与其他数据源一起工作,并且这个文件在结构上并没有那个么大的不同,所以我无法找出我的错误

所以,我感谢你的帮助

干杯
-克里斯

好吧,我很愚蠢,这就是答案

我已经记下了datumTokenizer:Bloodhound.tokenizers.obj.whitespace'ktb_be',由于缺乏知识,我没有意识到不可能找到只包含字母的字符串,因为字段ktb_be只包含数值

我真的不知道datumTokenizer可以说是搜索索引。现在我知道了。我想是吧