Javascript Typeahead.js远程工作,但预取不工作';T
我正在我的web应用程序中使用typeahead.js 0.10.5。出于某些奇怪的原因,通过远程工作实时获取建议,而预取被中断。这里发生了一些不明显和奇怪的事情。根据开发者控制台和Chrome的网络监视器,它甚至没有对页面加载进行查询。当然,当我开始打字时,它会进行查询 这真的让我很困惑——我做错了什么Javascript Typeahead.js远程工作,但预取不工作';T,javascript,jquery,typeahead.js,twitter-typeahead,Javascript,Jquery,Typeahead.js,Twitter Typeahead,我正在我的web应用程序中使用typeahead.js 0.10.5。出于某些奇怪的原因,通过远程工作实时获取建议,而预取被中断。这里发生了一些不明显和奇怪的事情。根据开发者控制台和Chrome的网络监视器,它甚至没有对页面加载进行查询。当然,当我开始打字时,它会进行查询 这真的让我很困惑——我做错了什么 // Instantiate the Bloodhound suggestion engine var tags = new Bloodhound({ datumT
// Instantiate the Bloodhound suggestion engine
var tags = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
url: '/tags/tags/search.json?q=%QUERY',
filter: function (taglist) {
// Map the remote source JSON array to a JavaScript object array
return $.map(taglist, function (tag) {
console.log(tag);
return {
value: tag.tag
};
});
}
},
prefetch: {
url: '/tags/tags/search.json?q=',
filter: function (taglist) {
// Map the remote source JSON array to a JavaScript object array
return $.map(taglist, function (tag) {
console.log(tag);
return {
value: tag.tag
};
});
},
}
});
// Initialize the Bloodhound suggestion engine
tags.initialize();
// Instantiate the Typeahead UI
$('#search-tags').typeahead(null, {
displayKey: 'value',
source: tags.ttAdapter(),
hint: true,
highlight: true
});
尝试从浏览器的本地存储中删除条目并重新启动。默认情况下,侦探犬对象会在浏览器的本地存储中缓存预取的数据,为其分配1天的TTL(生存时间),并且在TTL过期之前不会重新验证它。初始化侦探犬对象时,可以通过设置“cache:false”和/或“ttl:1000”(毫秒)更改默认值 预取是相关的,但与缓存略有不同,因为预取的数据不受服务器发送的缓存控制头的约束。它还存在于本地存储中,而不是浏览器的缓存中(这就是为什么硬重新加载或缓存清除不会导致重新获取它) 另一方面,远程获取的文件根据缓存控制头进行重新验证。因此,如果服务器允许,浏览器仍然可以缓存它们。但是,它们存储在缓存中,而不是本地存储中
LocalStorage中存在每个域的空间限制(请参阅),因此大型预取将失败,尽管我不知道typeahead是否会正常失败(即,使用数据,即使它无法存储数据)。尝试从浏览器的LocalStorage中删除条目,然后重新开始。嗯,我尝试使用Chrome的“删除最近的活动”但这并没有起作用,但在手动从本地存储中删除密钥后,它起作用了。将此作为答案发布,我会将其标记为正确。