html / javascript / php:我如何使用“全局变量”?

时间:2015-08-11 05:29:10

标签: javascript php

所以我的域名将从在我的计算机上构建它(localhost)变为我实际部署它时的域名,我不想回去并且不得不改变它的百万地方。现在我知道我可以在php中做一个超全局变量

<?php echo $GLOBALS['domain_name']; ?>

但据我所知,你不能在单独的.js文件中使用它。如何为我的域名创建一个可以在html和js中使用的“全局变量”?

4 个答案:

答案 0 :(得分:2)

您可以将任何PHP值注入客户端。

<script>
  var baseURL = <?php echo json_encode($baseURL); ?>;
</script>

使用json_encode因为这提供了以JS理解的格式提供数据的万无一失的安全方式,并且可用于真实数组,PHP“数组”,数字,字符串,无论您想要什么。

答案 1 :(得分:2)

在索引文件的头部打印(或在php中包含在标题标签中)

任何js文件都可以使用在其上方相同作用域级别定义的变量,即使在其他文件中也是如此。

http://www.w3schools.com/js/js_scope.asp

常见形式是在标签内部以及在任何其他呼叫之前定义所有“全局”标签。 js变量。

由于一些原因,打算将php打印到js文件中,尽管我已经听说过它可能,但是如果你需要在多个地方使用它,只需使用php include:

<html>
<?php
  // include any shared content, in this case i include entire <head> section
  include('header.php');
?>
<body>

因此,如果您在php索引文件的顶部有类似的内容,或者在包含的内容中放置:

<script>
  var baseUrl = "<?php echo $GLOBALS['domain_name']; ?>";
</script>

然后在那之后的任何地方都可以用作标准变量。


旁注:使用对象包装

作为旁注,您可以将其包装在对象中并将该对象传递给其他文件,例如:

var AppData = {};
AppData.domain_name = "<?php echo $GLOBALS['domain_name']; ?>";
AppData.googleTrackerUID = "<?php echo $GLOBALS['gtrackerid']; ?>";
AppData.whatever = true;

fnct_from_earlier_point_or_elsewhere(AppData);

如果你认为你可能需要传递任何其他设置,或者只是想为这种可能性构建(特别是如果可选的param,如同索引不存在那样易于制作可处理的函数),那么这只是真的有用吗? / p>

我更喜欢对象方法,但如果不需要则不要过度复杂。


修改

正如@Amadan评论的那样,在php中创建$ AppData数组/对象会更容易,然后调用它:

var AppData = <?php echo json_encode($AppData); ?>;

另外,关于某人发帖以省略&#39; var&#39;关键字,它通常是不好的形式,因为var不会阻止它是全局的,以及某些浏览器(IE)的一些问题

javascript var or not var, what's the difference?

答案 2 :(得分:1)

试试这个:

<script>    
window.yourGlobalVariable = ....
</script>

通过使用您的窗口,它将适用于您的所有网站

请参阅: Define global variable in a JavaScript function

答案 3 :(得分:0)

你可以拥有像const.php这样的文件

 define('ROOT','http://127.0.0.1/');

并且比在任何地方使用所以只需要改变ROOT的值