【问题标题】:jQuery Select2 and Struts 2 JSON pluginjQuery Select2 和 Struts 2 JSON 插件
【发布时间】:2013-09-30 14:51:13
【问题描述】:

我正在尝试填充 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>"; 
        }
    }
});

【问题讨论】:

  • ajax 调用返回什么结果?
  • 最后我只是在“Orphanet”对象中添加了“getId”和“getText”方法。我不想再次解析完整的 json 答案。无论如何我仍然不知道为什么“id:function(item)”和“formatResult:function(item)”不起作用。

标签: java jquery json struts2 jquery-select2


【解决方案1】:

试试

 $("#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 映射添加到具有命名空间 /jsongetOrphanets 操作。应进行相应的配置。不要转义标记,因为您在结果中显示 HTML。

【讨论】:

    【解决方案2】:

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

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

    1. 将响应视为普通字符串
    2. idDiagOrphanet 替换为id,将nomDiagOrphanet 替换为text,然后返回此字符串而不是return { results: data.orphanets };

    这是另一种方式: Modifying a JSON object by creating a New Field using existing Elements

    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;
    

    【讨论】:

      猜你喜欢
      • 2014-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多