我知道对此有很多问题,但我无法让它发挥作用。
我的 HTML (test.htm) 只有这个代码
<?php
$var = 'foo';
?>
<script type="text/javascript" language="javascript">
var val = "<?=$var?>";
alert(val);
</script>
但是当我用浏览器打开文件时,val 的值是"<?=$var?>"
而不是 'foo'
我怎样才能让它工作?
我知道对此有很多问题,但我无法让它发挥作用。
我的 HTML (test.htm) 只有这个代码
<?php
$var = 'foo';
?>
<script type="text/javascript" language="javascript">
var val = "<?=$var?>";
alert(val);
</script>
但是当我用浏览器打开文件时,val 的值是"<?=$var?>"
而不是 'foo'
我怎样才能让它工作?
除非您有一些配置允许,否则.htm
文件不会执行 PHP 代码,您必须使用.php
文件。
如果您在浏览器中查看 HTML 页面源代码,您可能会看到所有 PHP 代码。
唯一的其他解释是<? ?>
未启用短标签,您必须使用
<?php echo $var; ?>
但是当我用浏览器打开文件时,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) ?>;
您的帖子说您的文件扩展名是 .htm。您是否将 Web 服务器设置为将 .htm 文件解析为 PHP?如果您的服务器仅解析 .php 文件,请重命名您的文件并重试,因为这将解释为什么没有被处理。如果它被设置为解析 .htm 文件,那么 TJ Crowder 的回答是最有可能的问题。
也许你没有启用短标签,试试
您可能还想注意字符串和其他内容的转义,因此如果您有比字符串更复杂的内容,则可以使用 JSON
<?php $var = array( 'stuff' => 'things' );?>
<?php echo json_encode($var);?>
尝试:
var val = "<?php echo $var; ?>";