所以我的域名将从在我的计算机上构建它(localhost)变为我实际部署它时的域名,我不想回去并且不得不改变它的百万地方。现在我知道我可以在php中做一个超全局变量
<?php echo $GLOBALS['domain_name']; ?>
但据我所知,你不能在单独的.js文件中使用它。如何为我的域名创建一个可以在html和js中使用的“全局变量”?
答案 0 :(得分:2)
您可以将任何PHP值注入客户端。
<script>
var baseURL = <?php echo json_encode($baseURL); ?>;
</script>
使用json_encode
因为这提供了以JS理解的格式提供数据的万无一失的安全方式,并且可用于真实数组,PHP“数组”,数字,字符串,无论您想要什么。
答案 1 :(得分:2)
在索引文件的头部打印(或在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);
如果你认为你可能需要传递任何其他设置,或者只是想为这种可能性构建(特别是如果可选的param,如同索引不存在那样易于制作可处理的函数),那么这只是真的有用吗? / p>
我更喜欢对象方法,但如果不需要则不要过度复杂。
修改强>
正如@Amadan评论的那样,在php中创建$ AppData数组/对象会更容易,然后调用它:
var AppData = <?php echo json_encode($AppData); ?>;
另外,关于某人发帖以省略&#39; var&#39;关键字,它通常是不好的形式,因为var不会阻止它是全局的,以及某些浏览器(IE)的一些问题
答案 2 :(得分:1)
试试这个:
<script>
window.yourGlobalVariable = ....
</script>
通过使用您的窗口,它将适用于您的所有网站
答案 3 :(得分:0)
你可以拥有像const.php这样的文件
define('ROOT','http://127.0.0.1/');
并且比在任何地方使用所以只需要改变ROOT的值