【问题标题】:php constants in a javascript file [duplicate]javascript文件中的php常量[重复]
【发布时间】:2011-06-19 08:15:40
【问题描述】:

可能重复:
Pass a PHP string to a Javascript variable (and escape newlines)

我正在做一个项目,它已经完成了,但它需要再进行一次改进,并在 javascript 文件中应用语言常量。

考虑我们包含一个 javascript 文件,并且我们有这样的东西

            alert("YOU Have VOTED BEFORE");

就这么简单,脚本会提醒该文本

但是如果我们需要提醒它的语言常量怎么办:

            alert("<?php echo _VOTED_BEFORE?>");

只有在我的 php 代码内联之类的脚本回显时才有效...

但是,我们如何读取和包含外部 JavaScript 文件的 php 常量或 $vars ???

【问题讨论】:

    标签: php javascript


    【解决方案1】:

    对于更简洁的结构,我认为最好的方法是将您从 PHP 获得的所有数据设置在一个地方,即在您通过 PHP 提供的 HTML 中:

    <script>
        var MyNameSpace = {
            config:
                something: "<?php echo _VOTED_BEFORE ?>"
            }
        }
    </script>
    

    在之后包含的 JavaScript 文件中,您可以通过 MyNameSpace.config.something 访问该值。

    这也使得重用消息变得更加容易。

    【讨论】:

    • 处理 PHP/Javascript 常量的好方法。谢谢!
    【解决方案2】:

    有一种方法可以在脚本路径中使用查询字符串

    在这里查看我的答案

    How to pass variable from php template to javascript

    不幸的是,这会破坏您的 js 文件的缓存,因此请先权衡您的选项

    <script type="text/javascript" src="script.js?flag=<?php echo _VOTED_BEFORE?>"></script>
    

    为了不写太多代码,参考链接看看如何取值

    【讨论】:

    • 问题+1,不一定是解决方案:)
    • 最短的答案,也是我眼中最酷的答案。谢谢兄弟
    • 嘿,在 javascript 文件中,我如何读取变量?
    • 通过读取脚本 src 属性并拆分字符串。按照上面的链接
    【解决方案3】:

    实际上,你所拥有的已经接近正确了。

     <?php
     // Valid constant names
     define("VOTED_BEFORE", "false");
     ?>
    
    <script type="text/javascript">
        alert("<?php echo VOTED_BEFORE;?>");
    </script>     
    

    【讨论】:

    • 如果最初的js是通过script标签包含进来的,这个就不行了。
    【解决方案4】:

    如果不是 PHP 文件,则不能在其中包含 PHP 回显函数。我建议如果你想在你的外部 js 文件中使用 PHP 变量,那么在你的 PHP 中将它声明为全局变量 引用外部 js 之前的文件。

    <script type="text/javascript">
        var globalvar = '<?php echo _VOTED_BEFORE ?>' ;    
    </script>
    <script type="text/javascript" src="externalfile.js"></script>
    

    虽然混乱全局命名空间并不总是一个好主意。

    【讨论】:

    • 您需要在客户端或服务器上引用它
    • @mplungjan - 你是什么意思?
    • 他的意思是回显 _VOTED_BEFORE 会输出一个字符串,如果你不把它用引号括起来,就会在 javascript 中产生语法错误。
    • 啊,是的,谢谢。
    【解决方案5】:

    您可以使用 cookie 保存这些常量并通过 JavaScript 读取它们,否则您将不得不使用 AJAX

    【讨论】:

    • 将所有可能的翻译都发送到 cookie 中或浪费请求,而您所要做的就是将 js 文件变成具有 mime 类型的 php 文件,这是多么可怕的想法
    • 他说他已经知道内联了......仔细阅读他的问题“这只有在像我的php代码内联一样回显脚本时才有效......”
    猜你喜欢
    • 2021-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-14
    • 2010-10-01
    • 2014-10-06
    • 1970-01-01
    相关资源
    最近更新 更多