javascript - Bloodhound,预取保存在我的文件中的 json 文件

标签 javascript json bloodhound

我正在通过此处给出的示例来学习 Bloodhound: https://twitter.github.io/typeahead.js/examples/#scrollable-dropdown-menu .

当我从 Github 上的国家/地区示例 JSON 文件中预取时,它工作正常。

var countries = new Bloodhound({
  datumTokenizer: Bloodhound.tokenizers.whitespace,
  queryTokenizer: Bloodhound.tokenizers.whitespace,
  // `states` is an array of state names defined in "The Basics"
  prefetch: 'https://raw.githubusercontent.com/twitter/typeahead.js/gh-
  pages/data/countries.json'
});

但是,当我在本地保存 JSON 时,它会停止工作。

var countries = new Bloodhound({
    datumTokenizer: Bloodhound.tokenizers.whitespace,
    queryTokenizer: Bloodhound.tokenizers.whitespace,

    prefetch: 'file:///C:/Users/nicho/workspace/TypeAhead/Countries.json'    
});

当我将保存的 JSON 的链接放入浏览器时,它显示的内容与 Github 上的 JSON 文件相同。

为什么 Bloodhound 无法读取我的本地 JSON 文件?

最佳答案

给它一个像这样的相对路径:

var countries = new Bloodhound({
    datumTokenizer: Bloodhound.tokenizers.whitespace,
    queryTokenizer: Bloodhound.tokenizers.whitespace,

    prefetch: 'Countries.json'    
});

或者据我了解您的问题,它使用的是已经下载的 states.json 版本。您应该清除缓存并清除本地存储(localStorage.clear())。或者你可以添加cache: false,如下所示:

var countries = new Bloodhound({
    datumTokenizer: Bloodhound.tokenizers.whitespace,
    queryTokenizer: Bloodhound.tokenizers.whitespace,

    prefetch: {
        url: "countries.json",
        cache: false
    }
});

关于javascript - Bloodhound,预取保存在我的文件中的 json 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45153353/

相关文章:

javascript - 使用 Typeahead.js/Bloodhound.js 在远程和本地源之间切换

jquery - 将 Typeahead 与 Google 自定义搜索引擎结合使用

javascript - 在每个换行符中删除字符后的字符串

java - 如何在 Java 中使用 JSONArray 时忽略字段

javascript - promise xml2js 解析功能(ES6 promise )

JSON 有效字符

javascript - 预先输入 Bloodhound 排序返回值。

javascript - For循环在Jquery中只运行一次

javascript - 用javascript反向堆栈填充

javascript - Angular 订阅并绑定(bind)到发出的事件