2013-06-25 47 views
3

我無法獲得typeahead.js中的預取功能,但它對本地數據工作得很好。我首先嚐試鏈接到一個返回json對象或列表的servlet,但過了一段時間,我放棄了這一點,並開始檢查提供的示例。所以他們的例子鏈接到看起來像這樣的頁面: http://twitter.github.io/typeahead.js/data/countries.json 但是,當我將它鏈接到該頁面時,即使我的操作與他們完全相同,我的腳本也不工作。我試圖將該文件複製到我的本地工作空間並在那裏連接到它無濟於事。爲了檢查它是否正在進行任何調用,我每次得到get請求時都會使我的servlet崩潰,並且當我運行自動完成示例頁面時它確實崩潰,因此它不是緩存問題。我試圖將jquery降級到1.9.1,但這也沒有效果(目前使用1.10)。我嘗試使用不同版本的typeahead.js。我嘗試使用Internet Explorer以及谷歌瀏覽器來查看錯誤是否存在。typeahead.js預取不起作用

必須有一些重要的東西我失蹤了,因爲我已經用盡了所有我能想到的錯誤來源。其他人似乎沒有任何問題得到這個工作。

這裏是我使用的代碼:

<!doctype html> 
<html> 
<head> 
    <meta charset="utf-8" /> 
    <title>Demo</title> 
    <link rel="stylesheet" type="text/css" href="typeahead.js-bootstrap.css"> 

</head> 

<body> 

    <script src="jquery.js"></script> 
    <script src="typeahead.js"></script> 

<input type="text" class="typeahead" placeholder="test" /> 
    <script> 
    $(document).ready(function() {$('.typeahead').typeahead({ 
     name: "Auto" , 
     ttl_ms: 10000,             
     prefetch: 'http://twitter.github.io/typeahead.js/data/countries.json', 
     //local: ['abc', 'acd', 'ade', 'bcd]             
});}); 
    </script> 
</body> 
</html> 

回答

8

看來問題涉及到在瀏覽器中存儲的數據的緩存。

  1. 您可以清理瀏覽器存儲(而不是瀏覽器緩存)。
  2. 您可以將typeahead配置中的數據集name更改爲另一個。
  3. 您可以降低ttlprefetch。當然,以後你可以增加ttl。請看下圖:

    prefetch: { 
        url: 'http://twitter.github.io/typeahead.js/data/countries.json', 
        ttl: 1 // in milliseconds 
    },   
    

如果瀏覽這裏的代碼將更加清晰:http://goo.gl/TN3Gv

+0

我發現錯誤,問題是,我拿來一個錯誤的版本,我想我選擇了一個發展版。當我切換到穩定狀態時,一切都很順利。但是謝謝你的嘗試! – Johan

+0

Thaaaaaaaaaaaaaaaaanks! – umpirsky

+0

它用於本地存儲的cacheKey實際上是URL。所以更改名稱沒有什麼好處,我必須更新預取URL以清除有缺陷的高速緩存 – andrewtweber