如何从JavaScript中读取PHP变量?

3

我知道有很多关于这个问题的疑问,但我无法让它工作。

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

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

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

我该如何使其正常工作?


1
你的PHP环境支持短标签吗?尝试使用 <?php echo $var; ?> 进行测试。 - undefined
1
你的测试文件是test.htm?不是php? - undefined
@CMKanode:我完全忽略了那个,真是个好点子。 - undefined
5个回答

6
除非您进行了一些配置以允许,否则.htm文件不会执行PHP代码,您需要使用.php文件。
如果您在浏览器中查看HTML页面源代码,您可能会看到所有的PHP代码。
唯一的其他解释是短标记<? ?>没有启用,您需要使用<?php echo $var; ?>

4
但是当我在浏览器中打开文件时,val的值为""而不是'foo'。
听起来像是你禁用了短标签(并且使用的是PHP < 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) ?>;

1
您的帖子中提到您的文件扩展名为.htm。您的Web服务器是否设置为将.htm文件解析为PHP?如果您的服务器仅解析.php文件,请重命名您的文件并再次尝试,因为这可能是未能处理的原因。如果设置为解析.htm文件,则T.J. Crowder的答案最有可能是问题所在。

1

也许您没有启用短代码,请尝试

您可能还需要注意字符串的转义等问题,因此如果有比字符串更复杂的内容,可以使用JSON

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

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

0

尝试:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接