【问题标题】: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 框架?

【问题讨论】:

    标签: javascript php zend-framework javascript-framework


    【解决方案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');
          

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-08-19
            • 1970-01-01
            • 2023-03-26
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多