Javascript JSON驱动的jQuery数据表中的转义标记?

Javascript JSON驱动的jQuery数据表中的转义标记?,javascript,jquery,datatables,Javascript,Jquery,Datatables,我使用的是一个,它使用sAjaxSource属性动态加载一些JSON。一切都很好,只是加载的内容被视为潜在的标记,因此如果单元格中的文本包含,事情会变得很奇怪。这里有几个简单的位: function htmlEncode(value) { return $('<div/>').text(value).html(); } function htmlDecode(value) { return $('<div/>').html(value).text();

我使用的是一个,它使用
sAjaxSource
属性动态加载一些JSON。一切都很好,只是加载的内容被视为潜在的标记,因此如果单元格中的文本包含
,事情会变得很奇怪。这里有几个简单的位:

function htmlEncode(value) {
    return $('<div/>').text(value).html();
}

function htmlDecode(value) {
    return $('<div/>').html(value).text();
}
函数htmlEncode(值){
返回$('').text(value.html();
}
函数htmlDecode(值){
返回$('').html(value.text();
}

[注意:以下答案适用于DataTables 1.9x及以下版本。1.10更改了方法命名约定和其他一些内容。1.9x方法可用,但已弃用,将不可避免地被完全删除。]

如果可以“批量”剥离它们(即,如果您设计了一个不影响JSON有效性的转义字符串函数),则可以使用fnServerData函数:

"fnServerData": function ( sSource, aoData, fnCallback ) {
  $.ajax( {
    "dataType": 'json',
    "type": "GET",
    "url": sSource,
    "data": aoData,
    "success": function (data) {
      // run your escape string function to modify 'data'
      fnCallback(data); // or fnCallback(newData) if you used new variable
    }
  });
}
如果您不确定批量修改的安全性,可以使用fnRowCallback逐行修改:

"fnRowCallback": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {

  var cellData = myEscaper(aData[0]); // where myEscaper() is your own custom function
  $('td:eq(0)').text(cellData);

  return nRow;
}
在这个示例中,我只修改第一个单元格。如果它适用于所有单元格,您可能需要编写一个迭代器,遍历整行进行转换。如果它只适用于某些单元格,您可以一次处理一个单元格


注意aData[0]和td:eq(0)只是巧合地具有相同的索引(0)。如果有任何隐藏列,则不一定存在匹配项。另外,如果您使用mDataProp,您也需要处理这个问题。

试试这个技巧:对不起,我的问题不是非常清楚,我已经重新措辞了一点。问题不是“如何在javascript中转义字符串”,而是“如何让datatables在从ajax源加载字符串时转义字符串?”