2

我知道对此有很多问题,但我无法让它发挥作用。

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

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

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

我怎样才能让它工作?

4

5 回答 5

6

除非您有一些配置允许,否则.htm文件不会执行 PHP 代码,您必须使用.php文件。

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

唯一的其他解释是<? ?>未启用短标签,您必须使用
<?php echo $var; ?>

于 2012-05-14T11:02:39.093 回答
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) ?>;
于 2012-05-14T11:02:17.810 回答
1

您的帖子说您的文件扩展名是 .htm。您是否将 Web 服务器设置为将 .htm 文件解析为 PHP?如果您的服务器仅解析 .php 文件,请重命名您的文件并重试,因为这将解释为什么没有被处理。如果它被设置为解析 .htm 文件,那么 TJ Crowder 的回答是最有可能的问题。

于 2012-05-14T11:04:23.657 回答
1

也许你没有启用短标签,试试

您可能还想注意字符串和其他内容的转义,因此如果您有比字符串更复杂的内容,则可以使用 JSON

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

<?php echo json_encode($var);?>
于 2012-05-14T11:04:10.653 回答
0

尝试:

var val = "<?php echo $var; ?>"; 
于 2012-05-14T11:02:30.220 回答