我的页面上有一个 jquery 数据表,它使用服务器端处理来检索数据。 在这种情况下,其中一列包含 html 内容,因此我的服务器响应如下所示:
"aaData": [ [1, "aaa", "<span class="myclass">html here</span>" ], ...
我试过
"aoColumnDefs": [ "aTargets":[2], "sType": "html" }
但我仍然看到单元格内容,就好像它是纯字符串一样。 我能做什么?
制作了一个工作版本
"aoColumnDefs": [
{ "aTargets": [2],
"sType": "html",
"fnRender": function(o, val) {
return $("<div/>").html(o.aData[2]).text();
}
}
]
使用 jQuery 解码回 html。
我更新 SamuGG 的答案,以获得新的数据表版本:
"aoColumnDefs": [ {
"aTargets": [ 5 ],
"mRender": function ( data, type, full ) {
return $("<div/>").html(data).text();
}
} ]
您只需在 rawColumns() 或 make(true) 之前添加以下行
->escapeColumns('aaData')
使用此方法并传递列名就是这样
var renderAsHtml = function (data, type, full) {
return decHTMLifEnc(data);
};
var isEncHTML = function(str) {
if(str.search(/&/g) != -1 || str.search(/</g) != -1 || str.search(/>/g) != -1)
return true;
else
return false;
};
var decHTMLifEnc = function(str){
if(isEncHTML(str))
return str.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
return str;
}
将 renderAsHtml 作为函数引用传递给 fnRender。这也行
这就是我在数据表列中呈现 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>";
}
}},
在渲染函数上添加 .text()
render: function(data, type, sop, meta) {
var sutsut = '<div class="text-wrap width-200">' + sop.info + '</div>';
return $(sutsut).text();
}