为什么在将 PHP 变量传递给 javascript 之前需要对其进行回显?
例如,
drawChart(600/50, <?php echo $day; ?>, ...)
为什么我需要这个零件?为什么不只是做
drawChart(600/50, $day, ...)
?
谢谢
为什么在将 PHP 变量传递给 javascript 之前需要对其进行回显?
例如,
drawChart(600/50, <?php echo $day; ?>, ...)
为什么我需要这个零件?为什么不只是做
drawChart(600/50, $day, ...)
?
谢谢
您提出的问题需要解释一个强有力的概念问题。PHP 代码在网络服务器上处理,称为服务器端代码,而 javascript 代码在服务器返回页面的 html后在网络浏览器上执行,称为客户端代码。因此,您在不同的平台上有不同的执行阶段。javascript 代码无法评估 PHP 源代码,也不知道 PHP 变量及其状态。
您问题中的代码代表一个 javascript 函数调用,其中一个参数恰好是 PHP 变量。PHP 变量必须在浏览器接收到它之前在服务器上进行评估,因此 javascript 调用将正常工作。如果$day
变量具有值13
(为了示例),则以下代码:
drawChart(600/50,
<?php echo $day; ?>
, ...)
将像这样呈现到 HTML 中:
drawChart(600/50,
13
, ...)
但是,如果你跳过 PHP 的东西,你会得到:
drawChart(600/50,
$day
, ...)
这可能在浏览器中不起作用。
此外,您可能有一个名为 的 javascript 变量$day
,因此代码将使用它,而不是 PHP 评估的变量,甚至可以在没有错误的情况下工作,但会出现意外行为。
更新:对较早的问题的回答中提供了更好的解释。
这在早期让许多 Web 开发人员感到困惑。
您的 PHP 代码正在运行server-side。该变量$day
在 Web 请求到达您的服务器时进行评估。
您的 JavaScript 代码在客户端运行。从您的服务器的角度来看,它是一组发送到用户浏览器的静态文本。然后浏览器将此静态文本解释为代码并执行它。
您不能在 PHP 和 JavaScript 之间“共享”变量,因为在执行 JavaScript 时,您不再处于服务器运行 PHP 的上下文中。
所以你用它echo
来输出值$day
while 它是 PHP 上下文中的一个变量;然后它的值被注入到 JavaScript 中,它不再是来自客户端上下文的变量。(相反,在您的示例中,就好像您drawChart
使用硬编码值调用一样。)