我试过(但它不工作):
<?php
$htmlString= 'testing';
?>
<html>
<body>
<script type="text/javascript">
var htmlString=<?php echo $htmlString; ?>;
alert(htmlString);
</script>
</body>
</html>
这是我为此目的使用的教程:
我试过(但它不工作):
<?php
$htmlString= 'testing';
?>
<html>
<body>
<script type="text/javascript">
var htmlString=<?php echo $htmlString; ?>;
alert(htmlString);
</script>
</body>
</html>
这是我为此目的使用的教程:
试试这个:
<?php $htmlString= 'testing'; ?>
<html>
<body>
<script type="text/javascript">
// notice the quotes around the ?php tag
var htmlString="<?php echo $htmlString; ?>";
alert(htmlString);
</script>
</body>
</html>
当您遇到这样的问题时,一个好主意是检查您的浏览器是否有 JavaScript 错误。不同的浏览器有不同的显示方式,但请寻找 javascript 控制台或类似的东西。此外,请检查浏览器查看的页面来源。
有时初学者会对字符串中的引号感到困惑:在 PHP 部分,您分配'testing'
给$htmlString
. 这将一个字符串值放入该变量中,但该值中没有引号:它们仅用于解释器,所以他知道:哦,现在是字符串文字了。
您的字符串周围缺少引号:
...
var htmlString="<?php echo $htmlString; ?>";
...
如果您使用 .js 文件,上面的所有解释都不起作用。如果您想将 PHP 解析为 .js 文件,您必须通过使用以下命令修改 .js 文件所在的 .htaccess 在您的服务器上进行更改:
<FilesMatch "\.(js)$">
AddHandler application/x-httpd-php .js
</FilesMatch>
然后,包含以下代码的文件 test.js 文件将在客户端执行 .JS 并在服务器端解析 PHP:
<html>
<head>
<script>
function myFunction(){
alert("Hello World!");
}
</script>
</head>
<body>
<button onclick="myFunction()"><?php echo "My button";?></button>
</body>
</html>
将服务器端数据放入生成的 javascript 代码的唯一正确方法:
<?php $jsString= 'testing'; ?>
<html>
<body>
<script type="text/javascript">
var jsStringFromPhp=<?php echo json_encode($jsString); ?>;
alert(jsStringFromPhp);
</script>
</body>
</html>
使用简单的引号,您的变量内容不会针对 HTML 和 javascript 进行转义,因此它很容易受到 XSS 攻击...
出于类似的原因,我建议使用document.createTextNode()
而不是设置innerHTML
. 办公室 它更慢,但更安全......
你需要在 javascript 中的字符串周围加上引号
var htmlString="<?php echo $htmlString; ?>";