【问题标题】:Escaping single quote in datatable variable在数据表变量中转义单引号
【发布时间】:2019-12-11 17:45:26
【问题描述】:

我有一个 jQuery 数据表,我正在尝试使用弹出框来显示一些 cmets,但包含单引号的 cmets 会阻止弹出框显示整个评论。

在数据表单元格中,将显示整个评论。不知道为什么弹出框没有显示整个评论。

这是数据表的代码(尽可能简化):

 $.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 的位置。但是带引号的字符串无法显示整个评论。

我尝试以这种方式使用“转义”:

data-content='"+escape(tccomment)+"'

但是评论会在弹出框之外打印出来,并且包含一堆百分号。

如何解决此问题以在弹出框中显示整个评论?

【问题讨论】:

标签: javascript jquery datatables escaping popover


【解决方案1】:

你可以像这样使用 .replace 这个

var a = "'somehthing with single quote'"

var b = a.replace(/'/g,'"');

然后它们都将是双引号。如果你想要一个不同的字符或者根本没有引号,你可以修改替换函数的结尾。

【讨论】:

    【解决方案2】:

    这就是我让它工作的方式,虽然单引号现在是双引号:

    data-content='"+JSON.stringify(tccomment).replace(/&/, "&amp;").replace(/'/g, "&quot;")+"'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-31
      • 2022-01-20
      • 1970-01-01
      • 2017-04-05
      • 1970-01-01
      • 2012-07-28
      • 2019-12-13
      • 2012-11-03
      相关资源
      最近更新 更多