select2-4.0.3将值显示为JSON数据中的键

时间:2016-08-03 03:59:47

标签: json jquery-select2 select2 jquery-select2-4

我有来自服务器的这个JSON数据。这是每个JASONlint的有效JSON

问题是,当我输入3位数(任何虚假)我得到下拉,它显示“键”作为值!我不知道为什么它的顺序相反???如果我使用.each代替.map,它会正确地将值列为值(在控制台日志中),但在下拉列表中不显示任何内容(报告select2 js中的某些错误)。

JSON :(萤火虫)

{"4":"2013","3":"2014","1":"2016","6":"winter","7":"birthday","2":"2015","5":"summer","8":"vacation"
}

这是我的JS:

$("#selectTags").select2({
    tags: true,
    multiple: true,
    allowClear: true,
    //closeOnSelect: false,
    tokenSeparators: ',',       //  [' ',','],
    minimumInputLength: 3,
    ajax: {
        url: "/cgi-bin/json-data.pl",
        dataType: 'json',
        delay: 100,
        data: function (params) {
            var queryParameters = {
                term: params.term
            }
            return queryParameters;
        },
        processResults: function (data) {
            return {
                results: $.map(data, function (key,value) {
                    console.log('key='+key);
                    return {
                        id: key,
                        text: value
                    }
                })
            };
        }
    }
});

1 个答案:

答案 0 :(得分:1)

问题出在map,你混淆了论点,第一个是值,第二个是关键。 见http://api.jquery.com/jQuery.map/#jQuery-map-object-callback

    processResults: function (data) {
        return {
            results: $.map(data, function (value, key) {
                console.log('key='+key);
                return {
                    id: key,
                    text: value
                }
            })
        };
    }