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會怎麼樣。 –