2

我正在使用 Twitter 的 typeahead 的一个非常基本的设置。我有 2 个不同的搜索字段,因此有两个 typeahead initalizations。

Javascript:

$(document).ready(function() {
    $('input.search-event').typeahead({
        name: 'Events',
        prefetch: '/media/json/events.json',
        ttl: 0,
        limit: 10
    });

    $('input.search-artist').typeahead({
        name: 'Artists',
        prefetch: '/media/json/artists.json',
        ttl: 0,
        limit: 10
    });
});

events.json 和 Artists.json 都被格式化为["entry1", "entry2", "entry3", "..."].

我在 Chrome 的正常模式和隐身模式下得到不同的结果。在正常模式下,它似乎正在使用一个不再存在的旧 json 文件(我已将其删除)。在隐身模式下,它使用正确的 json 文件,但不会自动建议添加到 json 文件中的最后一项。我希望ttl设置为 0 可以解决这个问题,但事实并非如此。我已经清除了浏览器缓存,但这并不能解决问题。我在其他帖子中读过我应该清除浏览器的 localStorage 但我真的不知道如何。控制台日志中没有错误。

而且我刚刚发现在 FF 和 Safari 中 typeahead 根本没有显示任何内容 :-)

编辑: 结果似乎也取决于name:值。这应该发生吗?例如:如果我将name:值更改为'test'typeahead 根本不起作用。

4

1 回答 1

2

Typeahead在 FF 和 Safari 中确实有效。事实上,如果没有name它,它对您不起作用(对我而言)表明您的 json 文件中的某些内容是错误的,并且过去并非如此,并且您的浏览器正在使用缓存版本。

由于name是缓存的关键,这可能解释了您所看到的一切:

  • 在隐身模式下不起作用,因为在隐身模式下没有使用本地存储,并且 json 文件本身有问题。
  • 不适用于不同的名称,因为在缓存中找不到具有不同名称的数据集(同样——json 文件在某种程度上是坏的)。
  • 在 FF 和 Safari 中不起作用——同样的原因:json 很糟糕,而且它们还没有缓存任何东西。

要调试,首先在网络选项卡下查看 Chrome 中的开发人员工具 (F12),查看对 的请求和响应/media/json/artists.json,并确保它们正常。然后确保内容确实是有效的 JSON。

于 2013-09-09T16:45:26.677 回答