Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery数据表显示html内容_Jquery_Html_Datatables_Server Side - Fatal编程技术网

jQuery数据表显示html内容

jQuery数据表显示html内容,jquery,html,datatables,server-side,Jquery,Html,Datatables,Server Side,我的页面上有一个jquery数据表,它使用服务器端处理来检索数据。 在本例中,其中一列包含html内容,因此我的服务器响应如下所示: "aaData": [ [1, "aaa", "<span class="myclass">html here</span>" ], ... 我试着 "aoColumnDefs": [ "aTargets":[2], "sType": "html" } 但我仍然看到单元

我的页面上有一个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();
      } 
    }
]
“aoColumnDefs”:[
{“目标”:[2],
“sType”:“html”,
“fnRender”:函数(o,val){
返回$(“”).html(o.aData[2]).text();
} 
}
]
用jQuery解码html。

var renderAsHtml=function(数据、类型、完整){
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;
}
返回decHTMLifEnc(数据); }; var isEncHTML=函数(str){ 如果(str.search(//&;/g)!=-1 | | str.search(//g)!=-1 | | str.search(//g)!=-1) 返回true; 其他的 返回false; }; var decHTMLifEnc=函数(str){ 如果(isEncHTML(str)) 返回str.replace(//&;/g',&')。replace(//g',); 返回str; }

将renderAsHtml作为函数引用传递给fnRender。这也是有效的

这是我在datatable列中呈现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>";
                     }
                    }},
ajax:“getData?userobjid=&alpha=&selectsuppliersflag=“+selectsuppliersflag,
栏目:[
{data:null,render:function(数据,类型,行){
if(data.storeFrontUrl='undefined'| | data.storeFrontUrl==null){
返回“+data.companyName+”;
}
否则{
返回“”;
}
}},

对于新的数据表版本,我更新了SamuGG的答案:

"aoColumnDefs": [ {
                     "aTargets": [ 5 ],
                     "mRender": function ( data, type, full ) {
                      return $("<div/>").html(data).text(); 
                      }
            } ]
“aoColumnDefs”:[{
“目标”:[5],
“mRender”:功能(数据、类型、完整){
返回$(“”).html(数据).text();
}
} ]

只需在rawColumns()或make(true)之前的行下方添加

使用此方法并传递它的列名

->escapeColumns('aaData')