通过PHP解析JavaScript文件

Dio*_*ves 10 javascript php

我有一个JavaScript文件,我想包含一些PHP代码.问题是我在PHP上有一些我想在JS上使用的定义.

有没有办法在HTML中包含一个.js文件,允许服务器首先使用php解释它(在下载到客户端之前)?

谢谢 :)

Cfr*_*eak 31

<script src="/path/to/my/file.php"></script>
Run Code Online (Sandbox Code Playgroud)

file.php您输出任何内容之前,您还需要输出正确的标题,您应该具有以下内容:

header("Content-Type: application/javascript");
Run Code Online (Sandbox Code Playgroud)

编辑:正如@Tony_A指出的那样,它应该是application/javascript.当我在2010年写这篇文章时,我不认为这很重要:)


Pet*_*son 12

创建一个名为javascript-test.php的php文件

<?php
header('Content-type: application/javascript');

$php = 'Hello World';
echo "alert('$php');";
?>
Run Code Online (Sandbox Code Playgroud)

然后链接到您的PHP,就像它是一个JavaScript文件:

<script type="text/javascript" src="javascript-test.php" />
Run Code Online (Sandbox Code Playgroud)

如果你需要你的php文件扩展名为.js,那么你的服务器配置就可以了.


Pek*_*ica 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
Run Code Online (Sandbox Code Playgroud)

这样,外部JavaScript仍可以作为静态内容提供,不需要通过PHP运行.这是资源密集度较低的.


Fel*_*ing 7

没有经过测试,但可能有效:

<script lang="text/javascript" src="path/to/your/script.php" ></script>
Run Code Online (Sandbox Code Playgroud)

尝试将脚本.php作为文件扩展名.

  • @Jay:为什么?它与在HTML中嵌入PHP相同.当然你必须将你的PHP代码包装在`<?php ...?>中,其余部分应该不受PHP解释器的影响...或者我不明白你的观点.你通过PHP生成的JS代码应该是有效的.但**PHP代码**本身永远不会*有效*JS代码... (3认同)
  • @Jay不正确:PHP代码需要*生成*javascript语法.如果我们已经分裂了头发 (2认同)

Mat*_*hew 6

您也可以在服务器级别执行此操作.假设您正在使用apache,您可以将此行添加到您的配置中(即使您的.htaccess也可以):

AddType application/x-httpd-php .js

你也可以用css甚至普通的'html页面来做到这一点.

我确信其他服务器软件具有类似的功能.