2010-10-15 63 views
8

我有一個JavaScript文件,我想包含一些php代碼。 問題是我在PHP上也有一些定義,我也想在JS上使用它。通過PHP解析JavaScript文件

有什麼辦法可以在HTML中包含一個.js文件,以便服務器可以首先使用php解釋它(在下載到客戶端之前)?

謝謝:)

+0

你提到一個PHP包含或者其他東西似乎對你造成問題。仔細闡述這一點? – JAL 2010-10-15 14:37:25

+0

在過去,我實際上已經有了用於生成javascript函數的coldfusion函數。我發現這個特別有用,當我有可變數量的字段和不同的命名字段,並需要一些基於瀏覽器的功能。 – Jay 2010-10-15 14:39:17

+0

@亞歷克斯這是我與一個壞的require_once愚蠢;)乾杯 – DiogoNeves 2010-10-15 15:08:01

回答

28
<script src="/path/to/my/file.php"></script> 

file.php,你還需要輸出正確的標頭,輸出任何東西之前,你應該具備以下條件:

header("Content-Type: application/javascript"); 

編輯:由於@Tony_A指出,它應該是application/javascript。我認爲這並不重要一樣多,當我在2010年:)

+3

+1,提到標題 – 2010-10-15 14:35:46

+0

太棒了,我設法失敗了幾次,但我的錯誤hehe歡呼 – DiogoNeves 2010-10-15 14:59:10

+0

我剛剛回答了一個類似於這個問題,並引用了這個問題。看到你離開尼斯答案徽章1,所以我幫你解決了問題。 :) – 2011-01-27 21:33:36

7

沒有測試,但它可能工作:

<script lang="text/javascript" src="path/to/your/script.php" ></script> 

儘量給腳本.php爲文件擴展名。

+0

是的,這工作正常。 – JAL 2010-10-15 14:33:31

+0

如果您的PHP代碼是有效的javascript語法,這隻會有工作的機會。 – Jay 2010-10-15 14:34:21

+0

這不是爲我工作,但我也注意到,我需要另一個PHP裏面,可能會產生問題:) – DiogoNeves 2010-10-15 14:34:31

1

<script> global_one = '<?php echo $global_one; ?>';</script> 簡單的例子寫了這個帖子;)如果所有其他JavaScript之前把這個在你的HTML文件<head>global_one變量將提供給所有的JS文件。

0

是的,只寫一個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,儘管這不是必需的。

11

當然,最容易通過使它成爲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運行。這是資源密集度較低的。

6

您也可以在服務器級別執行此操作。假設你使用Apache,您可以將此行添加到您的配置(即使你的.htaccess會做):

AddType application/x-httpd-php .js

你也可以做到這一點與CSS甚至普通的醇」的HTML頁面。

我確定其他服務器軟件具有類似的功能。

+0

這不是一個好主意。它不僅會變慢(所有.js文件將通過PHP進行解析,無論它們是否包含代碼),但它也可能是一個安全漏洞。 – Cfreak 2017-03-25 01:35:49

11

創建一個名爲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擴展,這是可能在您的服務器配置。