转义数据表变量中的单引号
Escaping single quote in datatable variable
我有一个 jQuery 数据表,我正在尝试使用弹出窗口显示一些评论,但包含单引号的评论阻止了弹出窗口显示整个评论。
在数据表单元格中,显示了整个评论。不确定为什么弹出窗口无法显示整个评论。
这里是数据表的代码(尽可能简化):
$.ajax({
url: 'process/getTargetSheet.php',
type: 'POST',
data: '',
dataType: 'html',
success: function(data, textStatus, jqXHR){
var jsonObject = JSON.parse(data);
var table = $('#example1').DataTable({
"dom": "Rlfrtip",
"data": jsonObject,
"columns": [
{
"data": "tsc_tgcomment",
"fnCreatedCell": function (nTd, sData, oData, iRow, iCol)
{
var tccomment = oData.tsc_tgcomment;
$(nTd).html("<a tabindex='0' class='tcDisplay'
data-toggle='popover' data-trigger='focus'
data-content='"+tccomment+"' id='tcDisplay'
data-toggle='modal'>"+tccomment.substring(0, 50)+"...</span>");
$(function () {
$('[data-toggle="popover"]').popover();
});
},
// some more columns
}
]
});
},
error: // nothing important here
});
所以在上面的 $(nTd) 部分中,您会看到我将 tccomment 添加到弹出窗口的位置。但是带引号的字符串无法显示整个评论。
我尝试以这种方式使用 "escape":
data-content='"+escape(tccomment)+"'
但是评论打印出来超出了弹出框,并且包括一堆百分号。
如何解决此问题以在弹出窗口中显示整个评论?
你可以像这样使用.replace这个
var = "'somehthing with single quote'"
var b = a.replace(/'/g,'"');
那么它们都是双引号。如果你想要一个不同的字符或根本没有引号,你可以修改替换函数的结尾。
这就是我让它工作的方式,尽管单引号现在是双引号:
data-content='"+JSON.stringify(tccomment).replace(/&/, "&").replace(/'/g, """)+"'
我有一个 jQuery 数据表,我正在尝试使用弹出窗口显示一些评论,但包含单引号的评论阻止了弹出窗口显示整个评论。
在数据表单元格中,显示了整个评论。不确定为什么弹出窗口无法显示整个评论。
这里是数据表的代码(尽可能简化):
$.ajax({
url: 'process/getTargetSheet.php',
type: 'POST',
data: '',
dataType: 'html',
success: function(data, textStatus, jqXHR){
var jsonObject = JSON.parse(data);
var table = $('#example1').DataTable({
"dom": "Rlfrtip",
"data": jsonObject,
"columns": [
{
"data": "tsc_tgcomment",
"fnCreatedCell": function (nTd, sData, oData, iRow, iCol)
{
var tccomment = oData.tsc_tgcomment;
$(nTd).html("<a tabindex='0' class='tcDisplay'
data-toggle='popover' data-trigger='focus'
data-content='"+tccomment+"' id='tcDisplay'
data-toggle='modal'>"+tccomment.substring(0, 50)+"...</span>");
$(function () {
$('[data-toggle="popover"]').popover();
});
},
// some more columns
}
]
});
},
error: // nothing important here
});
所以在上面的 $(nTd) 部分中,您会看到我将 tccomment 添加到弹出窗口的位置。但是带引号的字符串无法显示整个评论。
我尝试以这种方式使用 "escape":
data-content='"+escape(tccomment)+"'
但是评论打印出来超出了弹出框,并且包括一堆百分号。
如何解决此问题以在弹出窗口中显示整个评论?
你可以像这样使用.replace这个
var = "'somehthing with single quote'"
var b = a.replace(/'/g,'"');
那么它们都是双引号。如果你想要一个不同的字符或根本没有引号,你可以修改替换函数的结尾。
这就是我让它工作的方式,尽管单引号现在是双引号:
data-content='"+JSON.stringify(tccomment).replace(/&/, "&").replace(/'/g, """)+"'