【问题标题】:Dynamic generation of JavaScript using PHP [closed]使用 PHP 动态生成 JavaScript [关闭]
【发布时间】:2013-01-30 00:34:33
【问题描述】:

我通常包含这样的javascript:

<script type="text/javascript" src="js/somejs.js">

有没有这样的方法:

<script type="text/javascript" src="js/somephp.php?js=somejs">

以便 PHP 脚本回显自定义生成的字符串或请求名称的文件

如果可能的话,基本的php语法应该如何?

提前致谢。

【问题讨论】:

  • * 不适合回答这个问题。我们不会为您编写代码。您需要自己编写代码,如果您不确定为什么某些事情没有按预期工作,请发布代码并说明您期望它做什么,以及它实际上在做什么,包括所有错误消息。见ask advice
  • @JonathanKuhn :我尝试一下,因为我不知道如何从服务器返回这样的文件
  • @JohnConde:对不起。下次我会按照你建议的方式进行。感谢您的建议。

标签: php javascript


【解决方案1】:

是的,这是可能的。 script 标签不关心它指向的 URL 是否以 '.js' 结尾。如果您将它指向某个将提供有效 javascript 的 URL,那么无论该 URL 是否以“.js”或“.php”或其他任何内容结尾,以及提供它的机制是否是您的 apache 服务器服务,您都很好直接来自文件系统的文件,回显 javascript 的 PHP 文件,或其他任何你喜欢的东西。

如果您决定通过 PHP 回显 JavaScript 来提供 JavaScript,为了整洁和正确,您应该通过分别调用 header('Content-type: application/javascript'); 将内容类型标头设置为“应用程序/javascript”。

【讨论】:

  • 也推荐将php的content-type header设置为text/javascript。
  • 你也可以使用这个技巧来提供 CSS。
  • @bfavaretto True,并添加到我的答案中。 (尽管据我所知,浏览器都忽略了script 标签所指向的内容类型,所以没有上下文可以产生任何实际效果?)
  • @bfavaretto "application/javascript" relevant
  • @ithcy 不错的链接,谢谢!
【解决方案2】:

正如@Mark Amery 所说,它可以像你展示的那样完成,但你可能应该包括

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

即使没有它,它也很可能适用于所有浏览器,但浏览器会默默地抱怨它。

如果您不包含 header 部分,Chrome 会在控制台中抛出这个:

资源解释为脚本,但使用 MIME 类型 text/plain 传输

【讨论】: