我想让select2与外部json文件一起使用: json文件看起来像这样(它被称为data.json,位于我的网站的根目录中):
{"laender":[
{
"Land" : "Ägypten",
"kurz" : "EG",
"Fahne" : "aegypten"
},
{
"Land" : "Andorra",
"kurz" : "AN",
"Fahne" : "andorra"
}
]}
Javascript看起来像这样:
$(document).ready(function($) {
function formatValues(data) {
return data.Land + ' ' + data.Fahne;
}
$('#countrySelect').select2({
ajax: {
dataType: "json",
url: "data.json",
results: function (data) {
return {results: data};
}
},
formatResult: formatValues
});
(如此处所述:Select2 load data with Ajax from file)。 HTML中的输出是一个简单的
<div id="countrySelect"></div>
但我无法让它发挥作用。我尝试了很多东西但没有任何反应。我也是json和Ajax的新手。
提前感谢您的帮助! 迪特马尔
答案 0 :(得分:1)
您的javascript代码适用于4.0.0以下的旧版本select2。如果你使用select2 4.0.0,那么你必须使用processResult而不是result。
尝试更改这些行
results: function (data) {
return {results: data};
}
喜欢这个
processResults: function (data) {
return {results: data};
}
有关其他信息,请选择2 4.0.0不再支持隐藏输入。所以,你的#countrySelect必须是select元素而不是隐藏的输入。
抱歉,我的英文不好答案 1 :(得分:0)
你在json的钥匙是:
"Land", "kurz", "Fahne",
但在这种情况下,select2期望:
"id", "text"
制作:<option value="id"> text </option>
您应该使用地图功能:
processResults: function(data){
return {
results: $.map(data, function(smthg){
return { id: smthg.kurz, text: smthg.Fahne }
})
};
}
它的例子,我不知道你想要使用哪些值,我使用json:
[
{"id_pr":"1252","pr":"aaa"},
{"id_pr":"1253","pr":"bbb"}
...
]
它有效,但是 我没有尝试:
{ laender: [
{"id_pr":"1252","pr":"aaa"},
{"id_pr":"1253","pr":"bbb"}
]}