【问题标题】:Use typeahead.js with bloodhound.md and an external json将 typeahead.js 与 Bloodhound.md 和外部 json 一起使用
【发布时间】:2014-10-21 20:52:21
【问题描述】:

我尝试将typeahead.jsbloodhound.md 和外部json 数据源一起使用。我想我会尽可能准确地遵循 github 上提供的文档和示例。但是,我无法实现所需的下拉菜单。

你能告诉我,我做错了什么吗?

[编辑]
我把整个代码(js和json)都移到了jsbin,所以跨域调用应该没有问题。

在此处查找示例代码: http://jsbin.com/vajamixubo/1/edit?html,js,output

我也将感谢有关如何有效调试 typeahead.js 调用的提示。

【问题讨论】:

    标签: javascript jquery json typeahead.js bloodhound


    【解决方案1】:

    关于您的示例,您缺少对 Typeahead 和 Bloodhound 库的引用。将以下内容添加到您的 HTML:

    <script src="http://cdnjs.cloudflare.com/ajax/libs/typeahead.js/0.10.4/typeahead.bundle.min.js"></script>
    

    现在 typeahead 控件可以工作,但是当您搜索建议结果时,它会将建议结果显示为“未定义”。这是因为你的显示键不对,应该是:

    displayKey: 'genre'
    

    可以在here找到工作示例。

    最后,在浏览器中轻松调试javascript添加:

    debugger;
    

    添加到您的代码中(例如,尝试将其放在 javascript 的开头)。如果您打开浏览器控制台,脚本执行将在这些调试语句处停止。

    或者,在您的示例中打开浏览器控制台,单击“源”选项卡,然后导航到“(无域)/vajamixubo.js”。这是由 jsbin 执行的 javascript,您可以在此处放置断点。

    【讨论】:

    • 谢谢!我认为在家中尝试这个(json与js在同一个域中)更容易,而不是尝试让它与jsonp一起使用。所以我会在今天晚些时候尝试一下。
    • @speendo 没问题。让我知道你过得怎么样。
    • 嗨!即使是我的愚蠢错误(比如忘记链接 typeahead-library),你也应该得到更多的支持。但是,我的 JSON 似乎符合标准(JSON 验证器不表示错误)。还有一个错误:我忘记了displayKey: 'genre',。您想在您的回答中指出最后一个错误吗(您也可以在此处链接到工作示例:jsbin.com/vujafuwonu/1/edit?html,js,output),以便我接受您的回答?
    • @speendo 哈哈,我们终于到了!我错过了显示键差异。我仍然建议将 JSON 键括在引号中,因为这是标准推荐的,但我想如果它有效,那么一切都很好。
    • 我只是再次检查JSON,我错了。您的 JSON 很好,并且密钥包含在引号中。我在 Chrome 中使用的扩展程序隐藏了它们。嗬!很高兴我能提供帮助,这个练习也帮助我巩固了我的知识:)
    最近更新 更多