2012-09-07 29 views
8

Tengo una tabla de datos jQuery en mi página, que utiliza el procesamiento del lado del servidor para recuperar los datos. En este caso, una de las columnas contiene contenido HTML, por lo que mis respuestas del servidor se ve así:jQuery DataTables mostrar contenido HTML

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

He probado con

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

Pero todavía ver el contenido celular como si fuera normal cuerda. ¿Qué puedo hacer?

Respuesta

5

hizo una versión trabajar con

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

decodificación posterior del html con jQuery.

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; 
} 

pase renderAsHtml como referencia de función a fnRender. Esta es también trabaja

0

Así es como me hacen etiquetas HTML en mis columnas DataTable:

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>"; 
        } 
        }}, 
2

actualizo la respuesta de SamuGG, para la nueva versión de tabla de datos:

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