为什么带有php-var的javascript代码不是';t工作


Why javascript code with a php var isn't working?

我想在使用PHP时更改文本框的javascript内容。

如果我用纯文本将其更改为:

echo "<script> var test = 0; simplemde.value('test'); 
test+= 5; alert(test);</script>";

它是有效的。但有了php变量,它就不再工作了:

echo "<script> var test = 0; simplemde.value('$markdown'); 
test+= 5; alert(test);</script>";

不确定我做错了什么。如果我打开网站并观看源文本,它会以正确的形式出现在那里,但它不在框中。

这是我的完整代码:

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
?>
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="./css/markdown.css">
<script src="./js/markdown.js"></script>
</head>
<body>
<textarea id="myID">
</textarea>
<script>
var simplemde = new SimpleMDE({
            element: document.getElementById("myID"),
            spellChecker: false,
            });
</script>
<?php
require_once './Michelf/Markdown.inc.php';
use 'Michelf'Markdown;
require_once 'loader.php';
$json_a = load();
if(count($json_a) > 0)
{
  $text = $json_a[0]['blog'];
  echo "found";
}
else
  echo "not found";
$markdown = Markdown::defaultTransform($text);
echo $markdown;
echo "<script> var test = 0; simplemde.value('test'); test+= 5;
alert(test);</script>";
echo "<script> var test = 0; simplemde.value('$markdown'); 
test+= 5; alert(test);</script>";
?>
</body>
</html>

您的问题缺少的东西:

  • $markdown的值
  • 运行PHP得到的JS
  • 错误消息显示在浏览器的开发人员工具控制台上

也就是说,我们可以做一些假设。

Markdown是一种文本标记语言,旨在用看起来很像纯文本的东西编写文档。它的一个主要特点是换行(用于分隔段落)。

JavaScript字符串文本中不允许使用文本换行符。

(即使没有这些假设,也可以合理地说(对于用一些未指定的文本替换字符串文字的问题的任何答案):)

您需要对$markdown中具有特殊含义的字符进行转义或其他编码。

要做到这一点,最简单的方法是利用JSON与JS文本语法大致相同的优势。

$js_string = json_encode($markdown);
echo "<script> var test = 0; simplemde.value($js_string); 
      test+= 5; alert(test);</script>";

请注意,$js_string有自己的引号,因此在输出变量时不需要手动包含它们。