javascript - 文本中断javascript中的单引号

标签 javascript php

我想知道如何在不破坏 javascript 代码的情况下允许用户在他们的文本和其他符号中使用单引号。现在,如果用户写了一个标题,例如“我不会”,它会破坏 javascript 代码。

 <a class="delete_post" href="javascript:delpost('<?php echo $row['id']; ?>','<?php echo $row['postTitle']; ?>')">Delete post</a>


function delpost(id, title) {
  if (confirm("Are you sure you want to delete '" + title + "'")) {
    window.location.href = '../../backend/posts/delete-post.php?delpost=' + id;
  }
}

最佳答案

这有两个步骤。

  1. 将 PHP 字符串转换为 JavaScript 字符串文字
  2. 使 JavaScript 字符串文字安全地插入到 HTML 中

json_encode 将处理第一个(JSON 是一种数据格式,或多或少是 JavaScript 的一个子集)。请注意,它将添加使其成为 JS 字符串文字所需的引号。

htmlspecialchars 将处理另一个。

<a class="delete_post" 
   href="javascript:delpost(<?php echo htmlspecialchars(json_encode($row['id'])); ?>,<?php echo htmlspecialchars(json_encode($row['postTitle'])); ?>)">
       Delete post
</a>

也就是说……

更好的方法是使用更合适的标记。

您没有在任何地方链接,因此您不应该使用链接,并且在不需要时让代码完全依赖于 JavaScript。由于您正在对服务器进行重大更改(通过删除某些内容),因此您应该使用 POST 请求,而不是 GET 请求。

编写不引人注目的 JavaScript。

<form class="deletepost" action="deletepost" method="post">
    <button>Delete post</button>
    <input type="hidden" name="id" value="<?php echo htmlspecialchars($row['id']);?>">
    <input type="hidden" name="postTitle" value="<?php echo htmlspecialchars($row['postTitle']);?>">
</form>

<script>
    addEventListener("submit", function (event) {
        if (event.target.classList.contains("deletepost")) {
            var elements = event.target.elements;
            if (!confirm("Are you sure you want to delete '" + elements.postTitle.value + "'?")) {
                event.preventDefault();
            }
        }
    });
</script>

关于javascript - 文本中断javascript中的单引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48084833/

相关文章:

php - 检查变量是否返回真

javascript - 分配元素特定的 bool 值以确定元素是否先前已被单击 - 当前代码毯更新所有元素

javascript - 对象只有字符串检测

javascript - 从 JSON 到 Actionscript

php - 我如何发送包含在表格中的多个复选框

php - 使用PHP GD创建具有不同字体的图像形式文本

javascript - 具有不同纹理的多个体素。表现

javascript - 动态添加项目到ng-repeat数组javascript

javascript - 将语句插入自定义 WordPress 数据库

php - 使用 php 构建时间间隔值数组