kdt*_*kdt 9 javascript jquery datatables
我正在使用jquery数据表,它使用该sAjaxSource属性动态加载一些JSON .一切都很好,除了加载的内容被视为潜在的标记,所以如果单元格中的文本包含<或某些东西,事情会变得奇怪.
在将数据加载到表中之前,如何让数据表转义我的数据?我不想做服务器端,因为服务器不应该关心客户端将如何处理数据.
[注意:以下答案适用于1.9x及以下的DataTables。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
}
});
}
Run Code Online (Sandbox Code Playgroud)
如果您不确定批量修改的安全性,可以使用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;
}
Run Code Online (Sandbox Code Playgroud)
在此示例中,我仅修改第一个单元格。如果适用于所有单元格,则可能需要编写一个迭代器,该迭代器将遍历整个行以进行转换。如果仅适用于某些单元,则可以一次处理一个。
请注意,aData [0]和td:eq(0)恰好具有相同的索引(0)。如果您有任何隐藏的列,则不一定有匹配项。另外,如果您使用mDataProp,则也需要处理它。
| 归档时间: |
|
| 查看次数: |
4064 次 |
| 最近记录: |