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