-4

为什么在将 PHP 变量传递给 javascript 之前需要对其进行回显?

例如,

drawChart(600/50, <?php echo $day; ?>, ...)

为什么我需要这个零件?为什么不只是做

drawChart(600/50, $day, ...)

?

谢谢

4

2 回答 2

2

您提出的问题需要解释一个强有力的概念问题。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 评估的变量,甚至可以在没有错误的情况下工作,但会出现意外行为。

于 2013-05-07T20:41:57.967 回答
2

更新:对较早的问题的回答中提供了更好的解释。

客户端和服务器端编程有什么区别?


这在早期让许多 Web 开发人员感到困惑。

您的 PHP 代码正在运行server-side。该变量$day在 Web 请求到达您的服务器时进行评估。

您的 JavaScript 代码在客户端运行。从您的服务器的角度来看,它是一组发送到用户浏览器的静态文本。然后浏览器将此静态文本解释为代码并执行它。

您不能在 PHP 和 JavaScript 之间“共享”变量,因为在执行 JavaScript 时,您不再处于服务器运行 PHP 的上下文中。

所以你用它echo来输出值$daywhile 它是 PHP 上下文中的一个变量;然后它的值被注入到 JavaScript 中,它不再是来自客户端上下文的变量。(相反,在您的示例中,就好像您drawChart使用硬编码值调用一样。)

于 2013-05-07T20:45:01.540 回答