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