json对象未在typeahead中返回值

json对象未在typeahead中返回值,json,object,twitter-bootstrap-3,bootstrap-typeahead,Json,Object,Twitter Bootstrap 3,Bootstrap Typeahead,我试图从json返回一个特定的数据,但它什么也不返回 我从一个例子 当使用示例url时,它可以完美地工作 url: 'https://cdn.rawgit.com/twitter/typeahead.js/gh-pages/data/countries.json', 当我从localhost执行此操作时,它也可以工作 url: '../json/countries.json', 但是,当我将countries.json文件更改为包含多个字段(请参见下面的json)时,它不会返回任何内容 JS

我试图从json返回一个特定的数据,但它什么也不返回

我从一个例子 当使用示例url时,它可以完美地工作

url: 'https://cdn.rawgit.com/twitter/typeahead.js/gh-pages/data/countries.json',
当我从localhost执行此操作时,它也可以工作

url: '../json/countries.json',
但是,当我将countries.json文件更改为包含多个字段(请参见下面的json)时,它不会返回任何内容

JSON:

JS(修改后仅在JSON文件的“name”替换中返回“city”:

我真的不明白,因为它与示例基本相同:


非常感谢

在typeahead方法的第二个参数中返回以下属性。如果要返回多个项目,必须使用display属性,而不是displaykey。而您可以使用suggestion属性自定义您的建议

$('.typeahead_city').typeahead()

{name:'国家',
显示:功能(项目){
退货项目.城市+'-'+项目.邮政编码},
来源:dataSource.ttAdapter(),
建议:功能(数据){
返回'+data.city+'-'+data.postal_代码+''}
}
这是工作小提琴


在typeahead方法的第二个参数中返回以下属性。如果要返回多个项目,必须使用display属性,而不是displaykey。而您可以使用suggestion属性自定义您的建议

$('.typeahead_city').typeahead()

{name:'国家',
显示:功能(项目){
退货项目.城市+'-'+项目.邮政编码},
来源:dataSource.ttAdapter(),
建议:功能(数据){
返回'+data.city+'-'+data.postal_代码+''}
}
这是工作小提琴


非常感谢。它可用于“本地”搜索,但在尝试“预取{url:'../json/results_test.json'}”时不起作用。没有问题。它已经在你的小提琴里起作用了。这里:两个示例中的json数据不同(对象数组和字符串数组)。上面的示例用于处理对象数组。那么你的要求是什么?我会为那做一把小提琴的。我的错。事实上,它工作得很好。在您的JSFIDLE中,我只是在“local:jsondata”中添加了“prefetch:{url:'../json/json_cities.json'}”替换为“local:jsondata”。但我可能会添加一个动态请求,因为我的json是2MBOkay。如果它解决了你的问题,别忘了记下我的答案。谢谢。:)对不起,geekowls,如果我可能会进一步打扰你。。。我想存储json中的值'cities_id',因为我想将它发送到我的mysql数据库。我认为修改返回“item.cities\u id”是可以的,但建议也变成了“cities\u id”。主意?非常感谢。它可用于“本地”搜索,但在尝试“预取{url:'../json/results_test.json'}”时不起作用。没有问题。它已经在你的小提琴里起作用了。这里:两个示例中的json数据不同(对象数组和字符串数组)。上面的示例用于处理对象数组。那么你的要求是什么?我会为那做一把小提琴的。我的错。事实上,它工作得很好。在您的JSFIDLE中,我只是在“local:jsondata”中添加了“prefetch:{url:'../json/json_cities.json'}”替换为“local:jsondata”。但我可能会添加一个动态请求,因为我的json是2MBOkay。如果它解决了你的问题,别忘了记下我的答案。谢谢。:)对不起,geekowls,如果我可能会进一步打扰你。。。我想存储json中的值'cities_id',因为我想将它发送到我的mysql数据库。我认为修改返回“item.cities\u id”是可以的,但建议也变成了“cities\u id”。一个主意?
[
{"cities_id":"1","city":"Attignat","postal_code":"01340"},
{"cities_id":"2","city":"Beaupont","postal_code":"01270"},
{"cities_id":"3","city":"B\u00e9ny","postal_code":"01370"}
]
var countries = new Bloodhound({
    datumTokenizer: Bloodhound.tokenizers.obj.whitespace('city'),
    queryTokenizer: Bloodhound.tokenizers.whitespace,
    prefetch: {
        url: '../json/json_cities.json',
        filter: function (countries) {
            return $.map(countries, function (city) {
                return {
                    city: city
                };
            });
        }
    }
});

// Initialize the Bloodhound suggestion engine
countries.initialize();


    $('.typeahead_city').typeahead(null, {
        name: 'city',
        displayKey: 'city',
        source: countries.ttAdapter()
    });
{   name: 'countries',
    display: function(item){ 
    return item.city+'–'+item.postal_code},
    source: dataSource.ttAdapter(),
    suggestion: function (data) {
            return '<div>' +data.city  + '–' + data.postal_code + '</div>'}    
}