2010-10-15 145 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扩展,这是可能在您的服务器配置。