如何从单独的javascript文件中引用PHP变量?

时间:2014-05-11 21:47:24

标签: javascript php

说我有someJavascript.js个文件和somePHP.php文件。在我的php文件中,我有一些$foo。如果它位于不同的文件中,如何设置var something = $foo

我尝试的事情:

  1. var something = '<?php echo $foo ?>'; - 这只是给了我一串完全相同的短语。
  2. var something = '<?php echo json_encode($foo); ?>';同样的事情,只是一个字符串。
  3. 任何帮助将不胜感激!感谢。

4 个答案:

答案 0 :(得分:1)

您的问题是您的网络服务器没有像处理.php文件那样处理.js文件。所有.js文件都按原样放到浏览器中。

一个简单的选择是在somePHP.php中包含一个隐藏元素,然后在someJavascript.js中引用它:

在somePHP.php中:

<html>
    <body>
        <input type="hidden" id="foo" value="<?php echo $foo; ?>">
    </body>
</html>

在someJavascript.js中:

var foo = document.getElementById('foo').value();

答案 1 :(得分:0)

正确的方法是使用eval: var something = eval('') 请记住,应该仔细使用json,并且有很多json库可以以更安全的方式将json数据解析为JavaScript对象!

答案 2 :(得分:0)

包含整个文件有点笨重,但它完成了工作,是吗? 您的文件必须是.php文件才能使用php变量。(或者您的服务器必须配置为使用php引擎处理.js个文件)

<?php include('somePHPfile.php') ?>


<script type="text/javascript" language="javascript">

var foo = "<?php echo $foo; ?>";

</script>

答案 3 :(得分:0)

我看到的方式是你有三个选择:

  1. Jason的回答
  2. 设置您的Web服务器以解析.js文件,如php文件。在Apache中,您可以将AddType application/x-httpd-php .js添加到a​​pache2.conf或httpd.conf文件中。 IIS中的类似想法。这个想法只有在您可以访问配置文件时才有效,因此不能在共享服务器上访问。
  3. 将您的javascript放入由php解析器处理的某个文件中。在扩展名为.php的文件中,您始终可以编写var a = '<?php echo $someVar; ?>';。然后在原始文件中写<script src='/path/to/your/phpScript.php'></script>。基本上是khaverim的答案。