Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

typeahead.js prefetch doesn't work

I can't get the prefetch function in typeahead.js to work, it works just fine with the local data though. I first tried linking to a servlet returning json objects or lists, but after a while I gave up on that and started checking the provided examples. So their examples links to pages that look like this: http://twitter.github.io/typeahead.js/data/countries.json However, my script doesn't even work when I link it to that page even if I do exactly the same thing as they do. I tried copying that file over to my local workspace and linking to it there to no avail. To check if it even were making any calls I made my servlet crash every time it got a get request, and sure enough it crashed when I ran my autocomplete example page so it isn't a cache problem. I tried downgrading jquery to 1.9.1, but that didn't work either(currently using 1.10). I tried using different versions of typeahead.js. I tried using internet explorer as well as google chrome to see if the error was there.

There must be something vital that I am missing, as I have exhausted every source of errors I could think of. Others don't seem to have any problems getting this to work.

Here is the code I use:

<!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>
like image 549
Johan Avatar asked Dec 29 '25 03:12

Johan


1 Answers

It seems the issue is related to caching of the data in the browser storage.

  1. You can clean your browser storage (not the browser cache).

  2. You can change the dataset name in typeahead config to another one.

  3. You can lower the ttl in prefetch. You can increase the ttl later, of course. See below:

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

It will be more clear if you browse the code here: https://github.com/twitter/typeahead.js/blob/master/dist/typeahead.js#L422

like image 193
seddass Avatar answered Dec 30 '25 15:12

seddass



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!