首页 > 解决方案 > 页面加载后 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 = ;

这显然是行不通的。我究竟做错了什么?开发工具是否在撒谎并且代码实际上很好?

标签: javascriptphp

解决方案


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

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

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

alert("");

但是,当我从控制台再次运行相同的函数时,即没有刷新页面,尽管警报调用似乎传递了一个空字符串,但它仍然像传递了值'12345'一样运行。所以这似乎 Firefox 没有在开发工具中显示它在页面上实际使用的内容。诡异的。无论如何,我称这是一个已结案的案件。


推荐阅读