【问题标题】:json object not returning value in typeaheadjson 对象未在 typeahead 中返回值
【发布时间】:2016-01-28 14:59:11
【问题描述】:

我正在尝试从 json 中返回特定数据,但它什么也没返回。

我以http://jsfiddle.net/Fresh/1hrk0qso/ 为例 使用示例 url 时效果很好。

url: 'https://cdn.rawgit.com/twitter/typeahead.js/gh-pages/data/countries.json',

当我从 localhost 执行此操作时它也有效

url: '../json/countries.json',

但是,当我更改 country.json 文件以包含多个字段(请参阅下面的 JSON)时,它不会返回任何内容。

JSON:

[
{"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"}
]

JS(仅修改为返回 'city' 以替换 JSON 文件中的 'name'):

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()
    });

我真的不明白,因为它也与示例大致相同: How do I list objects for Typeahead.js and/or with the Bloodhound engine?

非常感谢

【问题讨论】:

    标签: json object twitter-bootstrap-3 bootstrap-typeahead


    【解决方案1】:

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

    $('.typeahead_city').typeahead();

    {   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>'}    
    }
    

    这是工作小提琴。

    http://jsfiddle.net/geekowls/agrg3xhj/27/

    【讨论】:

    • 非常感谢。它适用于“本地”搜索,但在尝试“预取{url:'../json/results_test.json'}”时不适用
    • 没问题。它已经在你的小提琴中工作了。这里:jsfiddle.net/Fresh/1hrk0qso 两个示例中的 json 数据不同(对象数组和字符串数组)。上面的例子是用于处理对象数组。那么你的要求是什么?我会为此创建一个小提琴。
    • 我的错误。事实上它工作正常。从您的 jsfiddle 中,我只是通过“prefetch:{url:'../json/json_cities.json'}”将替换为“local:jsondata”。但我可能会添加一个动态请求,因为我的 json 是 2MB
    • 好的。如果它解决了您的问题,请不要忘记标记我的答案。谢谢。 :)
    • 对不起 geekowls,如果我可能进一步惹恼你...我想从 json 存储值“cities_id”,因为我想将它发送到我的 mysql 数据库。我虽然修改为返回“item.cities_id”是可以的,但建议也变成了“cities_id”。一个想法?
    猜你喜欢
    • 1970-01-01
    • 2018-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多