我有来自服务器的这个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
}
})
};
}
}
});
答案 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
}
})
};
}