2013-09-25 84 views
0

我試圖填充Struts2 JSONSelect2一個選擇。服務器是這樣返回一個JSON:jQuery Select2和Struts 2 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>"; 
     } 
    } 
}); 
+0

ajax調用返回的結果是什麼? –

+0

最後,我只是將「getId」和「getText」方法添加到「Orphanet」對象。我不想再解析完整的json答案。無論如何,我仍然不知道爲什麼「id:function(item)」和「formatResult:function(item)」不起作用。 – user2811229

回答

0

我嘗試了一下搜索,但沒有發現id: function(item) {

不管怎麼說,這裏有一個快速修復

  1. 考慮作爲正常字符串的響應
  2. 替換idDiagOrphanetidnomDiagOrphanettext和d然後返回這個字符串,而不是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; 
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; } 
    } 
}); 

新增合格的URL映射到getOrphanets行動命名空間/json。應該進行相應的配置。由於您在結果中顯示HTML,因此請勿轉義標記。