转义引号和标记以在JS函数中传递数据

时间:2018-04-30 11:44:50

标签: javascript php html laravel

我有一张表,我正在保存博客正文数据,数据通过TINYMCE编辑器,它保存标签和样式。当我提取数据以进行编辑并将其传递给函数以打开模态时,它会显示标记和所有内容并在按钮中输出数据。 这是代码:

    <td>
        <a class="btn btn-primary btn-md" 
        onclick="getData('<?php echo $blog->title?>','<?php echo 
        $blog->body?>',
        <?php echo $blog->id?>')">Update</a> 
    </td>

这是getData函数

 function getData(title,body,id) {
     debugger;
     document.getElementById('title1').value = title;
     tinymce.get('body').setContent(body);
     document.getElementById('blog_id').value = id;

     $('#myModalUpdate').modal('show');
 };

这就是它在页面上的输出方式 enter image description here

1 个答案:

答案 0 :(得分:0)

您只需要一次考虑每个图层。

首先你有一些数据......

$blog->title

...你想把它放到JavaScript中。所以你必须逃避它以使其对JavaScript安全。 json_encode将执行此操作,因为JSON是JS的子集。由于您输入了一个字符串,因此您将获得一个JSON字符串文字,因此您不能手动添加引号。

$js_safe_title = json_encode($blog->title);
$js_safe_body = json_encode($blog->body);
$js = "getData($js_safe_title, $js_safe_body);"

...然后你想把这个JS放到一个HTML属性中,所以你必须转义它才能使它对HTML安全:

$html_safe_js = htmlspecialchars($js);

然后你可以把它放在HTML中:

 onclick="<?=$html_safe_js?>"