我试过了(但它不起作用):
<?php
$htmlString= 'testing';
?>
<html>
<body>
<script type="text/javascript">
var htmlString=<?php echo $htmlString; ?>;
alert(htmlString);
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这是我用于此目的的教程:
Dar*_*mas 49
试试这个:
<?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>
Run Code Online (Sandbox Code Playgroud)
遇到类似这样的问题时,最好检查浏览器是否存在JavaScript错误.不同的浏览器有不同的显示方式,但寻找一个javascript控制台或类似的东西.另外,请检查浏览器查看的页面来源.
有时初学者对字符串中的引号感到困惑:在PHP部分中,您已分配'testing'
给$htmlString
.这会将一个字符串值放在该变量中,但该值中没有引号:它们仅用于解释器,因此他知道:哦,现在是一个字符串文字.
Joh*_*nde 25
你的字符串周围缺少引号:
...
var htmlString="<?php echo $htmlString; ?>";
...
Run Code Online (Sandbox Code Playgroud)
JLa*_*oie 11
如果您使用.js文件,上面的所有解释都不起作用.如果要将PHP解析为.js文件,则必须通过使用以下命令修改.js文件所在的.htaccess来对服务器进行更改:
<FilesMatch "\.(js)$">
AddHandler application/x-httpd-php .js
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)
然后,包含以下代码的文件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>
Run Code Online (Sandbox Code Playgroud)
将服务器端数据放入生成的javascript代码的唯一正确方法:
<?php $jsString= 'testing'; ?>
<html>
<body>
<script type="text/javascript">
var jsStringFromPhp=<?php echo json_encode($jsString); ?>;
alert(jsStringFromPhp);
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
使用简单的引号,变量的内容不会针对HTML和javascript进行转义,因此XSS攻击很容易受到攻击......
出于类似的原因,我建议使用document.createTextNode()
而不是设置innerHTML
.OFC.它更慢,但更安全......
你需要在javascript中的字符串周围的引号
var htmlString="<?php echo $htmlString; ?>";
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
181386 次 |
最近记录: |