![](/img/trans.png)
[英]Javascript: how i use a ''global variable'' for 2 different html pages?
[英]html/javascript/php: how do i use a “global variable”?
因此,我的域名將從原來在計算機(本地主機)上構建時的域名更改為實際部署時的域名,並且我不想回頭而不得不在100萬個位置中進行更改。 現在我知道我可以在php中做一個超全局變量
<?php echo $GLOBALS['domain_name']; ?>
但據我所知,您不能在單獨的.js文件中使用它。 如何為可以在html和js中使用的域名創建“全局變量”?
您可以將任何PHP值注入客戶端。
<script>
var baseURL = <?php echo json_encode($baseURL); ?>;
</script>
使用json_encode
因為它提供了萬無一失的安全方式,可以以JS理解的格式傳輸數據,並且可以在實際數組,PHP“數組”,數字,字符串等任何需要的格式上工作。
在索引文件的開頭打印(或在標頭標記中的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)也會出現問題
嘗試這個:
<script>
window.yourGlobalVariable = ....
</script>
通過使用您的窗口,它將可用於您的所有站點
請參閱: 在JavaScript函數中定義全局變量
你可以有一個像const.php這樣的文件
define('ROOT','http://127.0.0.1/');
而不是隨處使用,因此只需要更改ROOT的值
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.