select2-4.0.3 将值显示为 JSON 数据中的键
select2-4.0.3 displaying values as keys in JSON data
我有来自服务器的 JSON 数据。根据 JASONlint
,这是有效的 JSON
问题是当我输入 3 位数字(任何虚假的)时,我得到了下拉列表,它显示 "keys" 作为值!!!我不知道为什么它是相反的顺序???如果我使用 .each 代替 .map 它正确地将值列为值(在控制台日志中),但随后在下拉列表中不显示任何内容(报告了 select2 js 中的一些错误)。
JSON: (firebug)
{"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
,您混淆了参数,第一个是值,第二个是键。
见 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
}
})
};
}
我有来自服务器的 JSON 数据。根据 JASONlint
,这是有效的 JSON问题是当我输入 3 位数字(任何虚假的)时,我得到了下拉列表,它显示 "keys" 作为值!!!我不知道为什么它是相反的顺序???如果我使用 .each 代替 .map 它正确地将值列为值(在控制台日志中),但随后在下拉列表中不显示任何内容(报告了 select2 js 中的一些错误)。
JSON: (firebug)
{"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
,您混淆了参数,第一个是值,第二个是键。
见 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
}
})
};
}