javascript:onclick函数不适用于电子邮件

javascript:onclick函数不适用于电子邮件,javascript,ajax,datatable,Javascript,Ajax,Datatable,我有一个javascript和在数据表的ajax中,我有这部分代码 { "data": null, "width": "10%", "render": function(data){ icon2 = '<center><button type="button" class="btn btn-info m-btn m-btn--icon m-btn--icon-only btn-sm" ' + 'data-toggle

我有一个javascript和在数据表的ajax中,我有这部分代码

{   "data": null, 
    "width": "10%",
    "render": function(data){
        icon2 = '<center><button type="button" class="btn btn-info m-btn m-btn--icon m-btn--icon-only btn-sm" ' +
            'data-toggle="m-tooltip" title="" onclick="sendEmail('+data.email+')" data-placement="top" data-original-title="' + 'Send Email' + ' "> <i class="la la-envelope"></i></button>';
        icon2 += '</center>';

    return icon2; }
}
但当我单击按钮时,参数列表**后出现一个错误,上面写着**未捕获的语法错误:缺失)


是否有其他解决方案?

错误似乎出现在
的“render”:函数(数据){
部分。该函数已关闭,但包含的哈希未关闭

{   "data": null, 
    "width": "10%",
    "render": function(data){
        icon2 = '<center><button type="button" class="btn btn-info m-btn m-btn--icon m-btn--icon-only btn-sm" ' +
            'data-toggle="m-tooltip" title="" onclick="sendEmail('+data.email+')" data-placement="top" data-original-title="' + 'Send Email' + ' "> <i class="la la-envelope"></i></button>';
        icon2 += '</center>';

    return icon2; }
}
{“数据”:空,
“宽度”:“10%”,
“渲染”:函数(数据){
icon2='';
icon2+='';
返回icon2;}
}

请注意末尾的额外
}

因为文字必须被引用

你不能只写:

onclick="sendEmail(bob@example.com)"
这种快速而肮脏的方法只是向数据中添加几个
,但这使得假设数据不会有任何其他问题(例如,它包括
,或新行)

你应该:

  • 将数据编码为JSON,使其成为有效的JavaScript文本
  • 在HTML中对特殊字符进行编码,这样它们就不会导致HTML解析问题
  • e、 g

    const email=data.email;
    const js_safe_email=JSON.stringify(email);
    const html_safe_email=js_safe_email
    .替换(/&/g,“&;”)
    .replace(//g,“”)
    .替换(/“/g,”)
    .替换(/'/g,';);
    icon2='';
    

    这相当可怕,但将嵌入HTML的JS中的数据字符串混合在一起也是如此。通常最好使用DOM方法。

    哦,对不起,我的代码中有它,但忘了放结尾。}。谢谢
    onclick="sendEmail(bob@example.com)"
    
    const email = data.email;
    const js_safe_email = JSON.stringify(email);
    const html_safe_email = js_safe_email
         .replace(/&/g, "&amp;")
         .replace(/</g, "&lt;")
         .replace(/>/g, "&gt;")
         .replace(/"/g, "&quot;")
         .replace(/'/g, "&#039;");
    icon2 = '<center><button type="button" class="btn btn-info m-btn m-btn--icon m-btn--icon-only btn-sm" ' +
            'data-toggle="m-tooltip" title="" onclick="sendEmail('+html_safe_email+')" data-placement="top" data-original-title="' + 'Send Email' + ' "> <i class="la la-envelope"></i></button>';