1

我正在尝试使用Struts2 JSONSelect2填充一个选择。服务器正在返回这样的 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>"; 
        }
    }
});
4

2 回答 2

0

我尝试了一些搜索但没有找到id: function(item) {

无论如何,这是一个快速修复

  1. 将响应视为普通字符串
  2. 替换idDiagOrphanetidand nomDiagOrphanetwithtext然后返回这个字符串而不是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;
于 2013-09-25T21:26:39.390 回答
0

尝试

 $("#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; }  
    }
});

getOrphanets使用 namespace将限定的 URL 映射添加到操作/json。应进行相应的配置。不要转义标记,因为您在结果中显示 HTML。

于 2013-09-28T18:42:00.043 回答