我尝试过(但不能正常工作):
<?php
$htmlString= 'testing';
?>
<html>
<body>
<script type="text/javascript">
var htmlString=<?php echo $htmlString; ?>;
alert(htmlString);
</script>
</body>
</html>
以下是我为此目的使用的tutorial:
答案 0 :(得分:47)
试试这个:
<?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
。这会将一个字符串值放在该变量中,但该值中没有引号:它们仅用于解释器,因此他知道:哦,现在是一个字符串文字。
答案 1 :(得分:24)
你的字符串周围缺少引号:
...
var htmlString="<?php echo $htmlString; ?>";
...
答案 2 :(得分:11)
如果您使用.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>
答案 3 :(得分:9)
将服务器端数据放入生成的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
。 OFC。它更慢,但更安全......
答案 4 :(得分:6)
你需要在javascript
中围绕字符串引用var htmlString="<?php echo $htmlString; ?>";
答案 5 :(得分:0)
正如其他人指出的那样,您需要使用引号,但我只想指出,有一种写此相同代码行的简便方法
var htmlString="<?=$htmlString?>";
看到您可以省略“ php echo”的内容,并用简单的“ =”代替。
答案 6 :(得分:0)
让我们看看两个选项:
1。)在Javascript中使用PHP
library(tidyverse)
scalefactor <- max(Complete_Seasonality_Data$PRCP)/max(Complete_Seasonality_Data$Temp_C)
p <- ggplot(Complete_Seasonality_Data, aes(x = NewMonths5))
p <- p + geom_point(aes(y = PRCP, colour = "PRCP"))
p <- p + geom_point(aes(y = Temp_C*scalefactor, colour = "Temp"))
p <- p + scale_y_continuous(sec.axis = sec_axis(~./scalefactor, name = ylabseasonality))
p <- p + scale_colour_manual(values = c("blue", "red"))
p <- p + labs(y = "Precipitation (in)",
x = "Month",
colour = "Parameter")
p <- p + theme(axis.text.x = element_text(angle = 90))
p
注意:文件名只能是.php。
2。)在PHP中使用Javascript变量
<script>
<?php $temp = 'hello';?>
console.log('<?php echo $temp; ?>');
</script>