0
我有这个来自服务器的JSON数据。这是有效的JSON每JASONlintselect2-4.0.3在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
}
})
};
}
}
});
我明白了。谢谢,我意识到这一点,但我不知道这是与.map(通常我会假设关键值前)的'自然'任务。 – rajeev
这是因为ECMAScript5 Array.map的回调具有第一个参数 - 值(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map)。所以类似的签名是为了使对象兼容。 – Shrike
如果我有这种类型的json会怎么样。 –