我很好奇將PHP輸出傳遞給Javascript。兩件事具體:使PHP運行在.js頁面上不可行嗎?
我假設這可以安全地使用腳本標記在.php頁面上。有什麼理由不這樣做?
你能在.js頁PHP運行?需要進行哪些配置更改?再一次,會不會有一個理由?
我很好奇將PHP輸出傳遞給Javascript。兩件事具體:使PHP運行在.js頁面上不可行嗎?
我假設這可以安全地使用腳本標記在.php頁面上。有什麼理由不這樣做?
你能在.js頁PHP運行?需要進行哪些配置更改?再一次,會不會有一個理由?
我假設這可以在.php頁面上使用腳本標記安全地完成。有什麼理由不這樣做?
是。沒有理由不。
您可以讓PHP在.js頁面上運行嗎?需要進行哪些配置更改?再一次,會不會有一個理由?
是的,你將不得不配置你的網絡服務器使用PHP模塊的.js後綴。在nginx的你可能會添加位置線中的.js結尾的文件: -
location ~ \.js$
{
}
在Apache上你會做這樣的事情: -
AddType application/x-httpd-php .php .js
一個你可能不希望這樣做的原因,任何靜態的JS文件都會通過PHP模塊,這會導致額外的開銷。另一種辦法是引用PHP文件中的HTML腳本標記如: -
<script src="myfile.php"></script>
,然後確保你的PHP返回其與正確的內容類型如輸出: -
header('Content-Type: application/javascript');
謝謝,這是很好的信息。 – equazcion
你說的都對。
<script>
標籤.php
頁面上.php
<script type="text/javascript">
var myobject = {
data: '<?php echo $myPHPvariable; ?>';
};
// or better yet:
var myBetterObject = <?php echo json_encode($myPhpObject); ?>;
function foo() { ... }
</script>
不推薦
<?php
// This is an all-javascript file but the extension ends with .php
header('Content-Type: application/javascript');
?>
var myobject = {
data: '<?php echo $myPHPvariable; ?>';
};
function foo() { ... }
然後你包括你的HTML文檔中的文件有:
<script type="text/javascript" src="/custom_javascript.php"></script>
它一定要與.php
結束,幸運的是瀏覽器就知道它是JavaScript的由type="text/javascript"
部分,因爲你的PHP腳本輸出正確的Content-Type
標題。
第一個解決方案是簡單的:申報輸出HTML一些JS變量,它們可以通過PHP代碼不變或產生:
<script>
var my_variable = '<?php echo($my_variable); ?>';
</script>
然後你就可以在你的JavaScript代碼使用這個變量。
的.js
文件應該是靜態的,讓瀏覽器緩存他們,所以每次用戶加載頁面時,他們就不會被加載。通過使用PHP隨時生成.js
文件,使用緩存.js
的瀏覽器可能會遇到問題,而不是預期生成的文件。例如,如果您的變量包含動態內容作爲您網站的最新消息,日期時間等。
所以,您可以做到這一點,但您必須防止瀏覽器緩存文件,增加帶寬使用率或期望瀏覽器加載緩存.js
文件時的意外行爲。使用這種方式沒有任何好處。
爲什麼你想傳遞給Javascript的數據類型?是動態的(會定期更新的)還是靜態內容? –
我的特殊問題是開發服務器與生產服務器。我正在想方法只有一個頁面需要在它們之間保持唯一性,並且PHP和Javascript都會選擇變量(例如,主機URL等)。我想盡量讓這個問題更廣泛,因爲我可以考慮其他用途。但要回答你的問題,不,在我的情況下,數據不會經常變化。 – equazcion
我沒有看到你的問題和dev/prod環境之間的鏈接。也許在問題中增加一些你想使用的變量的例子可能會幫助我們看到你想要做的事情。 –