通过 PHP 解析 JavaScript 文件

IT技术 php javascript
2021-01-18 12:33:22

我有一个 JavaScript 文件,我想在其中包含一些 php 代码。问题是我在 PHP 上有一些定义,我也想在 JS 上使用。

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

谢谢 :)

6个回答
<script src="/path/to/my/file.php"></script>

file.php你还需要输出正确的标头,输出任何东西之前,你应该具备以下条件:

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

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

所以我一直在尝试使用这种功能,但我一直在我的 chrome 控制台中收到以下错误消息:拒绝从 'myurl/script.php?param=bar' 执行脚本,因为它的 MIME 类型('text/ html') 不可执行,并且启用了严格的 MIME 类型检查。我有一个名为 <script id="id" type="application/javascript" src=" myurl/script.php?param=bar"></script > 任何想法或建议的脚本,将不胜感激!
2021-03-16 12:33:22
太好了,我失败了几次,但我的错误嘿嘿欢呼
2021-03-31 12:33:22
我刚刚回答了一个类似的问题,其中引用了这个问题。看到您距离“好答案”徽章还有 1 分钟的路程,所以我帮助了您。:)
2021-04-02 12:33:22
@Cfreak 你还能使用 $_GET 从父文档中获取查询值吗?
2021-04-09 12:33:22
根据IANA 注册 MIME 媒体类型列表,您应该使用 MIME 类型application/javascript
2021-04-14 12:33:22

当然,最简单的方法是将其设为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 仍然可以作为静态内容提供,不需要通过 PHP 运行。那是较少的资源密集型。

创建一个名为 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 扩展名,这可以在您的服务器配置中实现。

未经测试,但它可能有效:

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

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

Downvoting 是可以的,但解释会很好:)
2021-03-20 12:33:22
它对我不起作用,但我也注意到我需要另一个可能会产生问题的 php :)
2021-03-23 12:33:22
@Jay 不正确:PHP 代码需要生成javascript 语法。如果我们已经分了头发
2021-03-25 12:33:22
@Jay:为什么?它与在 HTML 中嵌入 PHP 相同。当然,您必须将 PHP 代码包装在<?php ... ?>其余部分中,PHP 解释器应该保持不变……否则我不明白您的意思。并且您通过 PHP 生成的 JS 代码应该是有效的。但是PHP 代码本身永远不可能是有效的JS 代码......
2021-04-02 12:33:22
只有当您的 PHP 代码是有效的 javascript 语法时,这才有机会工作。
2021-04-06 12:33:22

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

AddType application/x-httpd-php .js

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

我相信其他服务器软件也有类似的功能。

这不是一个好主意。它不仅会变慢(你的所有 .js 文件都将通过 PHP 解析,无论它们是否包含代码)而且它也可能是一个安全漏洞。
2021-03-19 12:33:22