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 = ;
这显然是行不通的。我究竟做错了什么?开发工具是否在撒谎并且代码实际上很好?
解决方案
是的,看来这只是 Firefox 开发工具的问题。在 chrome 中打开页面没有显示任何问题,但为了进一步证明,如果我在函数中放置类似的行,例如:
function debug() {
alert("<?=$val?>");
}
然后将其设置为运行onload。它按应有的方式执行。当我检查开发工具中的相关行时,它说:
alert("");
但是,当我从控制台再次运行相同的函数时,即没有刷新页面,尽管警报调用似乎传递了一个空字符串,但它仍然像传递了值'12345'一样运行。所以这似乎 Firefox 没有在开发工具中显示它在页面上实际使用的内容。诡异的。无论如何,我称这是一个已结案的案件。
推荐阅读
- python - 我在使用 tensorflow 在 python 中执行卷积神经网络程序时遇到错误,错误是
- java - 我的控制器在运行时工作,但 mockkmvc 测试因依赖项而失败,该依赖项甚至不在类中
- c++ - 由于 [abi:cxx11],两个 boost 库之间的符号不匹配
- regex - Google表格中的正则表达式正向向后看
- typescript - 如何在 node.js 打字稿中创建可写的全局变量
- python - 更改我的 BFS,使其返回所有目标路径并且处于同一级别,这是最小的
- c - 为什么我在这条 if 行中有分段错误?
- javascript - 如何将字符串限制为仅 12 个字符
- java - 为 BlueJ 组合 jar 文件
- python - 为什么无缘无故说语法错误