如何< select>在Struts 2中使用jQuery Select2插件填充带有选项的标记

nfzehxib  于 2023-10-17  发布在  jQuery
关注(0)|答案(2)|浏览(110)

我正在尝试用Struts2 JSONSelect2填充<select>标记。服务器返回一个JSON,如下所示:

{"orphanets":[{"idDiagOrphanet":11509,"nomDiagOrphanet":"FACOMATOSIS CESIOFLAMMEA"},{"idDiagOrphanet":21782,"nomDiagOrphanet":"AUTOINFLAMMATION"}]}

如何格式化/解析结果以使其工作?我知道它需要idtext字段,但不能让它工作:

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

nhjlsmyf1#

我试着搜索了一下,但没有找到id: function(item) {
不管怎样,我有个快速解决办法
1.将响应视为普通字符串
1.将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;
ckocjqey

ckocjqey2#

尝试

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

添加了命名空间为/jsongetOrphanets操作的限定URLMap。应进行相应的配置。不要转义标记,因为你在结果中显示HTML。

相关问题