一些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 = ;
这显然行不通。我究竟做错了什么?开发工具在说谎并且代码实际上还不错吗?
答案 0 :(得分:0)
好吧,看来这只是Firefox开发工具的问题。在chrome中打开页面没有问题,但是为了进一步证明,如果我在函数中放置类似的行,例如:
function debug() {
alert("<?=$val?>");
}
然后将其设置为在加载时运行。它按应有的方式执行。当我在开发工具中检查相关行时,它说:
alert("");
但是,当我再次从控制台运行相同的功能时,即不刷新页面,尽管警报调用似乎传递了一个空字符串,但它仍然像传递了值'12345一样运行'。因此,似乎Firefox没有在开发工具中显示其实际在页面上使用的内容。奇怪的。无论如何,我称此为封闭案例。