【问题标题】:jQuery Datatables show html contentjQuery 数据表显示 html 内容
【发布时间】:2012-09-01 11:24:27
【问题描述】:

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

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

我试过了

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

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

【问题讨论】:

    标签: jquery html datatables server-side


    【解决方案1】:

    制作了一个工作版本

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

    使用 jQuery 解码回 html。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

        ->escapeColumns('aaData')
        

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

        【讨论】:

          【解决方案4】:
          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。这也是可行的

          【讨论】:

            【解决方案5】:

            这就是我在数据表列中呈现 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>";
                                 }
                                }},
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2023-03-11
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多