Html /javascript/php:如何使用全局变量?


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

所以我的域名将从在我的计算机(localhost)上构建到我实际部署它时的域名,我不想回去,不得不在无数个地方更改它。现在我知道我可以在php

中添加一个超全局变量

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

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

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

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

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

常见的形式是,在标签内部和在任何其他调用之前,定义所有的'全局' js变量。

打印php到一个js文件是非常不鼓励的几个原因,即使我听说这是可能的,但只要使用php包含,如果你需要它在多个地方:

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

如果你在php索引文件的顶部,或者include中有这样的内容你可以在这里写:

<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"数组",数字,字符串,任何你想要的。

try this:

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

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

看:在JavaScript函数中定义全局变量

你可以有一个像constp .php这样的文件

 define('ROOT','http://127.0.0.1/');
然后到处使用,所以只需要改变ROOT
的值