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); ?>; |
使用
试试这个:
1 | window.yourGlobalVariable = .... |
通过使用您的窗口,它将对您的所有站点都可用
见:在javascript函数中定义全局变量
你可以有一个像const.php这样的文件
1 | define('ROOT','http://127.0.0.1/'); |
而不是到处使用,所以只需要改变根的值