簡體   English   中英

html / javascript / php:如何使用“全局變量”?

[英]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)也會出現問題

javascript var或not var,有什么區別?

嘗試這個:

<script>    
window.yourGlobalVariable = ....
</script>

通過使用您的窗口,它將可用於您的所有站點

請參閱: 在JavaScript函數中定義全局變量

你可以有一個像const.php這樣的文件

 define('ROOT','http://127.0.0.1/');

而不是隨處使用,因此只需要更改ROOT的值

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM