javascript:onclick函数不适用于电子邮件
我有一个javascript和在数据表的ajax中,我有这部分代码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
{ "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, "&")
.replace(/</g, "<")
.replace(/>/g, ">")
.replace(/"/g, """)
.replace(/'/g, "'");
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>';