jQuery 数据表显示 html 内容

问题描述 投票:0回答:6

我的页面上有一个 jquery 数据表,它使用服务器端处理来检索数据。 在这种情况下,其中一列包含 html 内容,因此我的服务器响应如下所示:

"aaData": [ [1, "aaa", "<span class="myclass">html here</span>" ], ...

我试过

"aoColumnDefs": [ "aTargets":[2], "sType": "html" }

但我仍然看到单元格内容,就好像它是纯字符串一样。 我能做什么?

jquery html datatables server-side
6个回答
8
投票

制作了一个工作版本

"aoColumnDefs": [ 
    { "aTargets": [2], 
      "sType": "html", 
      "fnRender": function(o, val) { 
          return $("<div/>").html(o.aData[2]).text();
      } 
    }
]

使用 jQuery 解码回 html。


8
投票

我更新 SamuGG 的答案,以获得新的数据表版本:

"aoColumnDefs": [ {
                     "aTargets": [ 5 ],
                     "mRender": function ( data, type, full ) {
                      return $("<div/>").html(data).text(); 
                      }
            } ]

1
投票

您只需在 rawColumns() 或 make(true) 之前添加以下行

->escapeColumns('aaData')

使用此方法并传递列名就是这样


0
投票
var renderAsHtml = function (data, type, full) {
return decHTMLifEnc(data);
}; 
var isEncHTML = function(str) {
    if(str.search(/&amp;/g) != -1 || str.search(/&lt;/g) != -1 || str.search(/&gt;/g) != -1)
        return true;
    else
        return false;
};

var decHTMLifEnc = function(str){
    if(isEncHTML(str))
        return str.replace(/&amp;/g, '&').replace(/&lt;/g, '<').replace(/&gt;/g, '>');
    return str;
}

将 renderAsHtml 作为函数引用传递给 fnRender。这也行


0
投票

这就是我在数据表列中呈现 HTML 标签的方式:

ajax: "getData?userobjid=<%=session.getAttribute("userobjectid")%>&alpha=&selectsuppliersflag="+selectsuppliersflag,
columns: [
            { data:  null, render: function ( data, type, row ) {
                if(data.storeFrontUrl == 'undefined' || data.storeFrontUrl==null){
                        return "<label>"+data.companyName+"</label>";
                         }
                        else{
                        return "<a href='JavaScript:newPopup(\"directorylist/view/"+data.storeFrontUrl+"\");'>"+data.companyName+"</a>";
                     }
                    }},

0
投票

在渲染函数上添加 .text()

render: function(data, type, sop, meta) {
         var sutsut = '<div class="text-wrap width-200">' + sop.info + '</div>';
        return $(sutsut).text();                                            
           } 
© www.soinside.com 2019 - 2024. All rights reserved.