所以我的域名将从在我的计算机(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