如何从JavaScript中读取PHP变量?

时间:2012-05-14 11:00:38

标签: php javascript variables

我知道有很多问题,但我不能让它发挥作用。

我的HTML(test.htm)只有这段代码

<?php
$var = 'foo';
?>
<script type="text/javascript" language="javascript">
var val = "<?=$var?>";
alert(val);
</script>

但是当我用浏览器打开文件时,val的值是"<?=$var?>"而不是'foo'

我怎样才能让它发挥作用?

5 个答案:

答案 0 :(得分:7)

除非你有一些配置允许它,.htm文件不会执行PHP代码,你将不得不使用.php文件。

如果您在浏览器中查看HTML页面源代码,您可能会看到所有PHP代码。

唯一的另一种解释是,短标记<? ?>未启用,您必须使用左<?php echo $var; ?>

答案 1 :(得分:5)

  

但是当我用浏览器打开文件时,val的值是“”而不是'foo'

听起来你有shorttags disabled(并使用PHP&lt; 5.4.0)。尝试

var val = "<?php echo $var ?>";

编辑:并注意CM Kanode对该问题的评论:如果它是.htm文件,则可能是您的服务器没有通过PHP运行它(这需要特殊的配置,可能不是一个好主意)。 (您是通过http:// URL打开的,对吗?不在本地打开文件?因为除非涉及PHP服务器,否则无法处理PHP标记。)


更好的是,让json_encode确保价值是引用属性的,例如:

var val = <?php echo json_encode($var) ?>;

答案 2 :(得分:1)

也许您没有启用短标签,请尝试     

你可能也想留意字符串和东西的转义,所以如果你有一些比字符串更复杂的东西,你可以使用JSON

<?php $var = array( 'stuff' => 'things' );?>

<?php echo json_encode($var);?>

答案 3 :(得分:1)

你的帖子说你的文件扩展名是.htm。您是否将Web服务器设置为以PHP格式解析.htm文件?如果您的服务器只解析.php文件,请重命名您的文件并重试,因为这可以解释为什么没有处理。如果它被设置为解析.htm文件,那么T.J.克劳德的答案是最有可能的问题。

答案 4 :(得分:0)

尝试:

var val = "<?php echo $var; ?>";