typeahead prefetch奇怪的行为

时间:2013-09-09 16:14:05

标签: json typeahead.js

我正在使用Twitter的预先设置的非常基本的设置。我有两个不同的搜索字段,因此有两个类型的初始化。

使用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根本不起作用。

1 个答案:

答案 0 :(得分:2)

Typeahead 在FF和Safari中工作。事实上没有name它对你不起作用的事实(对我来说)你的json文件中的某些内容是错误的,并且它不是那种情况,并且你的浏览器正在使用缓存版本。

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

  • 无法在隐身模式下工作,因为本地存储未在隐身模式中使用,并且json文件本身存在问题。
  • 不能使用其他名称,因为在缓存中找不到具有不同名称的数据集(并且再次 - json文件有点不好)。
  • 在FF和Safari中不起作用 - 同样的原因:json很糟糕,而且它们还没有任何缓存。

要进行调试,请先查看网络标签下的Chrome浏览器工具(F12),然后查看/media/json/artists.json的请求和响应,并确保它们正常。然后确保内容确实是有效的JSON。