将 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中是啥意思?