将 php 变量分配给 javascript 变量的最佳做法是啥? [复制]

Posted

技术标签:

【中文标题】将 php 变量分配给 javascript 变量的最佳做法是啥? [复制]【英文标题】:What is the best practice to assign php variable to javascript variable? [duplicate]将 php 变量分配给 javascript 变量的最佳做法是什么? [复制] 【发布时间】:2014-01-28 07:05:44 【问题描述】:

我有一些这样的代码

  var minAmountPay =  <?php echo $this->chat['Current']['admin'] >= 1 ? 1 : $this->minAmountPay; ?>;
  var userId = <?php echo $this->currentUserId?>;

我使用 ZF,我的操作文件中有很多 javascript 代码。我想为每个动作创建 js 文件并缩小这些文件。但我无法创建 js 文件,因为我已将 php 变量分配给 javascript 变量。

也许我需要为此目的使用一些 javascript 框架?

【问题讨论】:

【参考方案1】:

使用data attributes。

例如:

html

<div id="something" data-minamountpay="<?php echo $this->chat['Current']['admin'] >= 1 ? 1 : $this->minAmountPay; ?>"></div>

JS(使用 jQuery):

var minAmountPay = $('#something').data('minamountpay');

【讨论】:

直接将 PHP 值输出到 JavaScript 变量的工作量少... 但是不能缓存 JS 文件,也不能将交互性与纯 HTML 分开。 这是正确的做法。 @Stanyer,不清理数据库输入的工作量更少。 @AmazingDreams 真实,真实 - 我这边的事情前景不佳...... 我想我创建了视图助手,它将生成带有变量的 js 文件。我会有这样的东西 $this->jsVars()->add('name', $value);。在此之后,我可以为每个值缓存文件,我不喜欢每次 jquery 从 html 中检索值。【参考方案2】:

JavaScript 不能直接与 PHP 交互。

这是因为 JavaScript 是客户端,而 PHP 是服务器端。

做到这一点的唯一方法就是像你一样 - 通过在 PHP 中生成输出并将其放入脚本中。

【讨论】:

【参考方案3】:

您可以通过使用将 javascript 添加到您的 html 文件中

<script type="text/javascript">
var minAmountPay =  <?php echo $this->chat['Current']['admin'] >= 1 ? 1 : $this->minAmountPay; ?>;
var userId = <?php echo $this->currentUserId?>;
</script>

【讨论】:

【参考方案4】:

您可以将这些值分配给页面中的隐藏输入。

并通过输入值获取值。

这些值对用户都是可见的。

【讨论】:

【参考方案5】:

您可能需要考虑将这些变量放在哪里。你能把它们放在 HTML 中吗?当我需要做你正在做的事情时,我使用 HTML 5 数据属性并将变量分配到适当的位置,如下所示:

<div id="my-appropriate-div"
    data-min-amount-pay="<?php echo $this->chat['Current']['admin'] >= 1 ? 1 : $this->minAmountPay; ?>"
    data-user-id="<?php echo $this->currentUserId ?>">

然后在 JavaScript 中你可以访问数据:

var minAmountPay = $('#my-appropriate-div').data('min-amount-pay');
var userId = $('#my-appropriate-div').data('user-id');

显然,我没有将它们放入变量中,而是直接在我的函数中需要的地方使用它们。

【讨论】:

以上是关于将 php 变量分配给 javascript 变量的最佳做法是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在 JavaScript 的上下文中说“将闭包分配给变量”是不是正确?

“var FOO = FOO || ”(将变量或空对象分配给该变量)在Javascript中是啥意思?

“var FOO = FOO || ”(将变量或空对象分配给该变量)在Javascript中是啥意思?

在 JSP 中将 JavaScript 变量分配给 Java 变量

将函数的结果分配给 PHP 类中的变量? OOP 怪异

在 JavaScript 中设置或更改 PHP 变量