Я пытаюсь заполнить Struts2 JSON и Select2 a select. Сервер возвращает JSON следующим образом:
{"orphanets":[{"idDiagOrphanet":11509,"nomDiagOrphanet":"FACOMATOSIS CESIOFLAMMEA"},{"idDiagOrphanet":21782,"nomDiagOrphanet":"AUTOINFLAMMATION"}]}
Как я могу форматировать/анализировать результат, чтобы заставить его работать? Я знаю, что он ожидает поля "id"
и "text"
, но не может заставить его работать:
$("#selCodOrphanet").select2({
quietMillis: 300,
placeholder: "Buscar diag. Orphanet...",
minimumInputLength: 4,
ajax: {
url: '../json/getOrphanets',
dataType: 'json',
data: function (term, page) {
return {
term: term
};
},
results: function (data, page) {
return { results: data.orphanets };
},
id: function(item) {
return item.idDiagOrphanet;
},
formatResult: function(item) {
return "<div class='select2-user-result'>" + item.nomDiagOrphanet + "</div>";
}
}
});
Пытаться
$("#selCodOrphanet").select2({
placeholder: "Buscar diag. Orphanet...",
minimumInputLength: 4,
ajax: {
url: '<s:url namespace="/json" action="getOrphanets"/>',
dataType: 'json',
quietMillis: 100,
data: function (term, page) {
return {
term: term
};
},
results: function (data, page) {
return { results: data.orphanets };
},
id: function(item) {
return item.idDiagOrphanet;
},
formatResult: function(item) {
return "<div class='select2-user-result'>" + item.nomDiagOrphanet + "</div>";
}
escapeMarkup: function (m) { return m; }
}
});
Добавлено квалифицированное сопоставление URL-адресов для действия getOrphanets
с пространством имен /json
. Соответствующая конфигурация должна быть выполнена. Не избегайте разметки, так как вы показываете HTML в результатах.
Я попытался немного поискать, но не нашел id: function(item) {
В любом случае, здесь быстро исправить
idDiagOrphanet
на id
и nomDiagOrphanet
с text
а затем верните эту строку вместо return { results: data.orphanets };
Другой способ: изменение объекта JSON путем создания нового поля с использованием существующих элементов
var ornts= data.orphanets;
var new_obj ;
for(var i=0; i<data.orphanets.length; i++){
var person = persons[i];
new_obj.push({
id: ornts.idDiagOrphanet,
text: ornts.nomDiagOrphanet,
});
}
return new_obj;