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

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

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

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


打印在索引文件的头部(或在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);

如果你认为你可能需要传递任何其他设置,或者只是想为这种可能性构建,那么这只是真正用到的(特别是如果可选参数,如果索引不存在,就很容易使可重用函数处理)

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


编辑

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

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

另外,关于有人发帖以省略'var'关键字,它的通常糟糕的形式作为var不会阻止它成为全球性的,并且某些浏览器(IE)

JavaScript var或不var,有什么区别?


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

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

使用json_encode是因为这提供了一种万无一失的安全方式来传递JS可以理解的格式的数据,并且可以在真正的数组,PHP“数组”,数字,字符串,任何你想要的方面工作。


尝试这个:

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

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

请参阅:在JavaScript函数中定义全局变量

链接地址: http://www.djcxy.com/p/95031.html

上一篇: html/javascript/php: how do i use a "global variable"?

下一篇: Definition vs initialization