页面加载后,PHP echo语句为空

时间:2019-01-21 21:56:30

标签: javascript php

一些PHP变量正在回显到JavaScript和HTML,但似乎未出现在浏览器接收的源代码中。使用PHP 7.2.2

首先,我知道所有PHP在到达浏览器之前都已完全解析并执行。对于其他项目,我已经做过类似的事情,并且从未遇到过问题,因此我不确定这到底是怎么回事。我的某些代码取决于用户输入,因此我将一些PHP变量回显到一段JavaScript中,以便在页面加载后可以对其进行操作。

这不完全是我所拥有的,但或多或​​少:

<!DOCTYPE html>
<?php
  ...

  $val = 12345;
?>

<script type="text/javascript">
    alert("<?=$val?>");
    ...

因此页面的行为符合预期-一种。值(12345)会按预期方式发出警报,但是,如果我去查看源代码(使用Firefox v62开发人员工具),则第一行JS代码如下:

alert("");

我不确定这怎么可能,因为它确实可以发出警报。这是一个比看起来更大的问题,因为在其他地方我想将PHP值分配给JS变量,例如:

var var1 = <?=$val?>;

代码中最终出现的内容:

var var1 = ;

这显然行不通。我究竟做错了什么?开发工具在说谎并且代码实际上还不错吗?

1 个答案:

答案 0 :(得分:0)

好吧,看来这只是Firefox开发工具的问题。在chrome中打开页面没有问题,但是为了进一步证明,如果我在函数中放置类似的行,例如:

function debug() {
  alert("<?=$val?>");
}

然后将其设置为在加载时运行。它按应有的方式执行。当我在开发工具中检查相关行时,它说:

alert("");

但是,当我再次从控制台运行相同的功能时,即不刷新页面,尽管警报调用似乎传递了一个空字符串,但它仍然像传递了值'12345一样运行'。因此,似乎Firefox没有在开发工具中显示其实际在页面上使用的内容。奇怪的。无论如何,我称此为封闭案例。