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

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

因此,我的域名将从在我的计算机(localhost)上构建到实际部署时的域名,我不想回到过去,必须在一百万个地方更改它。现在我知道我可以用PHP做一个超全局变量了

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


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

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

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

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

尽管我已经听说了将PHP打印到JS文件中的可能性,但出于一些原因,强烈建议不要将其打印到JS文件中,但如果您在多个地方需要它,请使用php include:

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

因此,如果在php索引文件的顶部或者include中有类似的内容,那么您可以将其放置在:

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

然后它就可以作为一个标准变量在那之后的任何地方使用。

< BR>

旁注:使用对象包装器

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

1
2
3
4
5
6
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);

只有当您认为可能需要传递任何其他设置,或者只是为了实现这一可能性而构建(特别是在可选参数的情况下,因为如果索引不存在,很容易使可重用的函数可以处理)时,这才是真正有用的。

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

< BR>

编辑

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

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

另外,对于发布以省略"var"关键字的人来说,它通常是不好的形式,因为var并不能阻止它成为全局的,并且某些浏览器(即)存在一些问题。

javascript var与否var,有什么区别?


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

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

使用json_encode,因为这提供了以JS理解的格式传递数据的安全方法,并且可以在真实数组、php"数组"、数字、字符串上工作,无论您想要什么。


试试这个:

1
window.yourGlobalVariable = ....

通过使用您的窗口,它将对您的所有站点都可用

见:在javascript函数中定义全局变量


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

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

而不是到处使用,所以只需要改变根的值