所以我的域名将从在我的计算机上构建它(localhost)更改为我实际部署它时的域名,我不想回去,不得不在一百万个地方更改它。现在我知道我可以在php中做一个超级全局变量第一个月但据我所知,你不能在单独的.js文件中使用它。我如何为我的域名创建一个可以在html和js中使用的“全局变量”?
3vpjnl9f1#
在索引文件的头中打印(或在php include中在头标记中打印)
任何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索引文件的顶部或您放置的include文件中有类似的内容:
<script> var baseUrl = "<?php echo $GLOBALS['domain_name']; ?>"; </script>
型那么它就可以在那个点之后的任何地方被用作标准变量。
**附带说明:使用对象 Package **
顺便说一下,您可以将它 Package 在一个对象中,然后将该对象传递给其他文件,例如:
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 or not var, what's the difference?的
ar5n3qh52#
您可以将任何PHP值注入到客户端。
<script> var baseURL = <?php echo json_encode($baseURL); ?>; </script>
字符串使用json_encode是因为它提供了一种安全可靠的方式,以JS理解的格式传递数据,并且适用于真实的数组,PHP“数组”,数字,字符串,任何你想要的。
json_encode
dxxyhpgq3#
试试这个:
<script> window.yourGlobalVariable = .... </script>
字符串通过使用您的窗口,它将可用于所有您的网站参见:Define global variable in a JavaScript function
ldxq2e6h4#
你可以有一个像const.php这样的文件
define('ROOT','http://127.0.0.1/');
字符串而不是到处使用,所以只需要改变ROOT的值
tvokkenx5#
永远不会太迟!通常,在js脚本中使用php并不是一个好的做法。而不是用...
字符串.你可以考虑使用一个 data- 属性,如:
<script data-base-url="<?=json_encode($baseURL)?>"> let baseURL = document.currentScript.getAttribute("data-base-url"); </script>
型或者,您可以将上述js代码包含在任何单独的js脚本中,只需将 data-base-url 属性添加到将此脚本插入HTML的script标记中。
5条答案
按热度按时间3vpjnl9f1#
在索引文件的头中打印(或在php include中在头标记中打印)
任何js文件都可以使用在其上同一作用域级别中定义变量,即使是在其他文件中也是如此
http://www.w3schools.com/js/js_scope.asp
常见的形式是,在任何其他调用之前,在标记内部和处定义所有的“全局”js变量。
出于以下几个原因,我们不鼓励将php打印到js文件中,尽管我听说这是可能的,但如果您在多个地方需要它,请使用php include:
字符串
因此,如果您在php索引文件的顶部或您放置的include文件中有类似的内容:
型
那么它就可以在那个点之后的任何地方被用作标准变量。
**附带说明:使用对象 Package **
顺便说一下,您可以将它 Package 在一个对象中,然后将该对象传递给其他文件,例如:
型
只有当您认为可能需要传递任何其他设置,或者只是想为这种可能性而构建时,这才真正有用(特别是如果是可选参数,那么在索引不存在的情况下创建可重用的函数就很容易了)
我更喜欢对象方法,但如果不需要,不要过于复杂。
已编辑
正如@Amadan评论的那样,在php中创建$AppData数组/对象甚至会更容易,然后只需调用以下代码:
型
此外,关于有人张贴省略'var'关键字,它通常是不好的形式,因为var不阻止它是全球性的,一些问题与某些浏览器(IE)
javascript var or not var, what's the difference?的
ar5n3qh52#
您可以将任何PHP值注入到客户端。
字符串
使用
json_encode
是因为它提供了一种安全可靠的方式,以JS理解的格式传递数据,并且适用于真实的数组,PHP“数组”,数字,字符串,任何你想要的。dxxyhpgq3#
试试这个:
字符串
通过使用您的窗口,它将可用于所有您的网站
参见:Define global variable in a JavaScript function
ldxq2e6h4#
你可以有一个像const.php这样的文件
字符串
而不是到处使用,所以只需要改变ROOT的值
tvokkenx5#
永远不会太迟!
通常,在js脚本中使用php并不是一个好的做法。
而不是用...
字符串
.你可以考虑使用一个 data- 属性,如:
型
或者,您可以将上述js代码包含在任何单独的js脚本中,只需将 data-base-url 属性添加到将此脚本插入HTML的script标记中。