繁体   English   中英

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

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

因此,我的域名将从原来在计算机(本地主机)上构建时的域名更改为实际部署时的域名,并且我不想回头而不得不在100万个位置中进行更改。 现在我知道我可以在php中做一个超全局变量

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

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

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

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

使用json_encode因为它提供了万无一失的安全方式,可以以JS理解的格式传输数据,并且可以在实际数组,PHP“数组”,数字,字符串等任何需要的格式上工作。

在索引文件的开头打印(或在标头标记中的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或not var,有什么区别?

尝试这个:

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

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

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

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

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

而不是随处使用,因此只需要更改ROOT的值

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM