typeahead.js很好用:
var simpleCountriesList = [
"Andorra",
"United Arab Emirates",
"Afghanistan",
"Antigua and Barbuda"
];
就我而言,有一个对象数组,但它包含在这样的对象中:
var countryObjectsWrappedInResults = {
"results":[
{
"name":"Andorra"
},
{
"name":"United Arab Emirates"
},
{
"name":"Afghanistan"
},
{
"name":"Antigua and Barbuda"
}
]
};
或
{
"maintainers":[
{
"name":"Jake Harding",
"url":"https://twitter.com/JakeHarding"
},
{
"name":"Tim Trueman",
"url":"https://twitter.com/timtrueman"
},
{
"name":"Veljko Skarich",
"url":"https://twitter.com/vskarich"
}
]
}
我创建了一个小的jsbin来说明本地和远程的问题: http://jsbin.com/OseWeKA/5/edit
我正在从bootstrap typeahead迁移,我可以使用updater从结果中弹出数组。 twitter.js的等价物是什么?
答案 0 :(得分:2)
向远程数据集添加“过滤器:”。类似的东西:
remote: {
url: '...',
filter: function (response) {
retval = [];
for (var i = 0; i < response.maintainers.length; i++) {
retval.push(response.maintainers[i].name);
}
return retval;
},
}
filter
将您的远程响应转换为基准数组。
无论如何,你的小提琴不起作用,因为你的服务器不支持JSONP,你明确指出dataType: "jsonp"
。您的服务器还将text/plain
作为Content-Type
返回,其中应返回脚本。我假设你的“实时”系统没有真正的问题。
答案 1 :(得分:0)
我会建议你这样做。
var newCountrylist = [];
$.each( countryObjectsWrappedInResults.results , function(k , v ){
newCountrylist.push(v.name);
});