我有一個JavaScript文件,我想包含一些php代碼。 問題是我在PHP上也有一些定義,我也想在JS上使用它。通過PHP解析JavaScript文件
有什麼辦法可以在HTML中包含一個.js文件,以便服務器可以首先使用php解釋它(在下載到客戶端之前)?
謝謝:)
我有一個JavaScript文件,我想包含一些php代碼。 問題是我在PHP上也有一些定義,我也想在JS上使用它。通過PHP解析JavaScript文件
有什麼辦法可以在HTML中包含一個.js文件,以便服務器可以首先使用php解釋它(在下載到客戶端之前)?
謝謝:)
<script src="/path/to/my/file.php"></script>
在file.php
,你還需要輸出正確的標頭,輸出任何東西之前,你應該具備以下條件:
header("Content-Type: application/javascript");
編輯:由於@Tony_A指出,它應該是application/javascript
。我認爲這並不重要一樣多,當我在2010年:)
+1,提到標題 – 2010-10-15 14:35:46
太棒了,我設法失敗了幾次,但我的錯誤hehe歡呼 – DiogoNeves 2010-10-15 14:59:10
我剛剛回答了一個類似於這個問題,並引用了這個問題。看到你離開尼斯答案徽章1,所以我幫你解決了問題。 :) – 2011-01-27 21:33:36
沒有測試,但它可能工作:
<script lang="text/javascript" src="path/to/your/script.php" ></script>
儘量給腳本.php
爲文件擴展名。
是的,這工作正常。 – JAL 2010-10-15 14:33:31
如果您的PHP代碼是有效的javascript語法,這隻會有工作的機會。 – Jay 2010-10-15 14:34:21
這不是爲我工作,但我也注意到,我需要另一個PHP裏面,可能會產生問題:) – DiogoNeves 2010-10-15 14:34:31
<script> global_one = '<?php echo $global_one; ?>';</script>
簡單的例子寫了這個帖子;)如果所有其他JavaScript之前把這個在你的HTML文件<head>
的global_one
變量將提供給所有的JS文件。
是的,只寫一個PHP文件,輸出JavaScript和包括它在你的頁面,你通常會像
<?php $f=40; ?>
<script type='text/javascript>
var f=<?php echo $f;?>;
</script>
客戶並不關心,如果腳本文件中的.js結束,.PHP或什麼,只是關於MIME類型和內容。
您也可以使用Apache指令,可能在.htaccess文件中告訴它將某個.js文件處理爲PHP,或者將filename.js的請求直接指向filename.php,儘管這不是必需的。
當然,最容易通過使它成爲js.php
文件。
如果可能的話,不過,考慮一種替代方案:抓取PHP定義成JavaScript包括外部腳本文件之前:
<script>
define1 = <?php echo YOUR_DEFINE1; ?>
define2 = <?php echo YOUR_DEFINE2; ?>
</script>
<script src="....."> // This script can now use define1 and define2
這樣,外部JavaScript仍然可以充當靜態內容和沒有按」 t需要通過PHP運行。這是資源密集度較低的。
您也可以在服務器級別執行此操作。假設你使用Apache,您可以將此行添加到您的配置(即使你的.htaccess會做):
AddType application/x-httpd-php .js
你也可以做到這一點與CSS甚至普通的醇」的HTML頁面。
我確定其他服務器軟件具有類似的功能。
這不是一個好主意。它不僅會變慢(所有.js文件將通過PHP進行解析,無論它們是否包含代碼),但它也可能是一個安全漏洞。 – Cfreak 2017-03-25 01:35:49
創建一個名爲javascript-test的php文件。PHP
<?php
header('Content-type: application/javascript');
$php = 'Hello World';
echo "alert('$php');";
?>
,然後鏈接到你的php,如果它是一個JavaScript文件:
<script type="text/javascript" src="javascript-test.php" />
如果你需要你的PHP文件有一個.js擴展,這是可能在您的服務器配置。
你提到一個PHP包含或者其他東西似乎對你造成問題。仔細闡述這一點? – JAL 2010-10-15 14:37:25
在過去,我實際上已經有了用於生成javascript函數的coldfusion函數。我發現這個特別有用,當我有可變數量的字段和不同的命名字段,並需要一些基於瀏覽器的功能。 – Jay 2010-10-15 14:39:17
@亞歷克斯這是我與一個壞的require_once愚蠢;)乾杯 – DiogoNeves 2010-10-15 15:08:01