将带双引号的字符串作为参数从php传递到javascript

时间:2017-12-05 08:18:51

标签: javascript php html mysql ajax

我一直试图弄清楚这件事,我不知道自己做错了什么,或者我错过了什么。

我试图传递一个字符串,其中包含我从数据库中检索到的双引号,以便在textarea中显示。

情境样本如下:

<?php
   $content = '<div align="center"><b>This is a sample content.</b></div>';
   echo '<textarea id="myTextArea"></textarea>';
   echo '<button onclick="myFunction('.$content.')">Click me</button>';
?>

<script>
  function myFunction(content){
    document.getElementById("myTextArea").innerHTML = content;
  }
</script>

预期结果应该是 myTextArea 应该包含文本,但结果显示:

Output

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您应该使用htmlspecialchars()引用您的输出,如下所示:

<?php
   $content = "<div align=\"center\"><b>This is a sample content.</b></div>";
   echo '<textarea id="myTextArea"></textarea>';
   echo '<button onclick="myFunction(\''.htmlspecialchars($content).'\')">Click me</button>';
?>

<script>
  function myFunction(content){
    document.getElementById("myTextArea").innerHTML = content;
  }
</script>

答案 1 :(得分:0)

您需要在字符串中转义引号:

   $content = "<div align=\"center\"><b>This is a sample content.</b></div>";

在这种情况下你也可以使用撇号,比如

   $content = "<div align='center'><b>This is a sample content.</b></div>";

   $content = '<div align="center"><b>This is a sample content.</b></div>';

编辑:

另外,请确保将内容用作字符串:

echo '<button onclick="myFunction(\''.$content.'\')">Click me</button>';