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