Javascript 使用typeahead.js实现自定义源时遇到问题

Javascript 使用typeahead.js实现自定义源时遇到问题,javascript,typeahead.js,Javascript,Typeahead.js,我正在尝试将自定义源代码(远程)与typeahead.js一起使用,但在正确运行时遇到了一些问题。如果我对数据进行硬编码,事情会很顺利,但是当我尝试实现对远程服务的调用时,该调用永远不会被调用,因此永远不会检索数据来填充typeahead 代码如下: var places = function(query, cb){ $.getJSON({ url: "https://api.foursquare.com/v2/venues/search?v=20120321&i

我正在尝试将自定义源代码(远程)与typeahead.js一起使用,但在正确运行时遇到了一些问题。如果我对数据进行硬编码,事情会很顺利,但是当我尝试实现对远程服务的调用时,该调用永远不会被调用,因此永远不会检索数据来填充typeahead

代码如下:

var places = function(query, cb){
    $.getJSON({
        url: "https://api.foursquare.com/v2/venues/search?v=20120321&intent=global&query=%QUERY&client_id="+App.fs.client_id+"&client_secret="+App.fs.client_secret,        
        success: function(results){
            cb(results.response.venues);
        },
        error: function(){
             console.log("error");
        }
    });
};

$("#search").typeahead({
        highlight: true
    },
    {
        name: "Places",
        displayKey: "name",
        source: places
    }
);
如果我创建一个名为
results
的对象,并手动构造数据,然后将其传递给
cb
,那么一切正常。但是,在这个实现中,甚至从未调用过
$.getJSON
。我错过了什么


谢谢

注意,使用typeahead.js,您不必手动加载数据。使用预取URL将获取pageload上的数据,然后存储在localStorage中

$('#input').typeahead([
{
    name: 'places',
    prefetch: four_square_url_query,
}
]);
您的示例中的“places”不是一个函数吗?那么:

var places;
 $.getJSON({
        url: fsquare_query,        
        success: function(results){
            places = results.response.venues;
        },
        error: function(){
             console.log("error");
        }
    });

我相信最新的typeahead没有“source”属性,而是有“local”。

我想你可以这样做

var search = $("#search").typeahead({
    highlight: true,
    source: []
};
现在您可以使用异步请求从服务器获取数据

$.getJSON({
    url: "https://api.foursquare.com/v2/venues/search?v=20120321&intent=global&query=%QUERY&client_id="+App.fs.client_id+"&client_secret="+App.fs.client_secret,        
    success: function(results){
        // some logic to filter, process results from server
        // now you can directly update typeahead source
        search.data('typeahead').source = results; 
    },
    error: function(){
         console.log("error");
    }
});
也读和


我还喜欢selectize.js库,它有丰富的api,

事实证明,问题在于我如何实现
$.getJSON
。我原以为该函数的签名是选项的散列,但事实并非如此,它实际上是
(url、[data],[success])
。将其更改为正确的签名可以使事情顺利进行


感谢所有的快速回复

我猜链接工作不正常。您是否尝试过手动检查链接是否返回JSON数据?