javascript文件中的php常量

时间:2011-06-19 08:15:40

标签: php javascript

  

可能重复:
  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 ???

5 个答案:

答案 0 :(得分:11)

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

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

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

访问该值

这样可以更轻松地重复使用该消息。

答案 1 :(得分:4)

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

来执行此操作

请在此处查看我的回答

How to pass variable from php template to javascript

不幸的是,这会破坏你的js文件的缓存,所以首先加权你的选项

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

为了不写太多代码,请参阅链接以了解如何检索值

答案 2 :(得分:2)

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

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

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

答案 3 :(得分:2)

实际上,你所拥有的是接近正确的。

 <?php
 // Valid constant names
 define("VOTED_BEFORE", "false");
 ?>

<script type="text/javascript">
    alert("<?php echo VOTED_BEFORE;?>");
</script>     

答案 4 :(得分:-1)

您可以使用Cookie来保存这些常量并通过JavaScript读取它们,或者您必须使用AJAX