在外部Javascript文件中使用PHP代码

我只是想知道是否可以使用包含PHP代码的外部JS文件。

我的外部JS

$(document).ready(function(){ $('#update').click(function(){ var tableVal={}; // a bit of php code I need in JS var search_city='; $.post('/project_detail/pub', {'tableVal':tableVal},function(message) }) }) }) 

我的观点页面

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

JS不起作用,因为我认为JS中的PHP代码是问题所在。 有什么想法吗? 非常感谢。

您可以通过将js文件重命名为php并在script标记src使用此链接来实现(如其他答案所示)

虽然这似乎是一种好的和简单的方法,但有许多理由不这样做。

  • 缓存(您生成的脚本不会被缓存,可能会更改,但需要额外的工作)
  • 内存消耗(对此生成的js文件的每个请求都需要php

你可以简单地改成这样的东西来完成它(以更好的方式,IMO):

   

你的js内容变得像这样:

 $(document).ready(function(){ // I assume that not using search_city in your sample code // and some syntax errors, is just by mistake... $('#update').click(function(){ var tableVal={search_city:Settings.search_city}; $.post(Settings.base_url+'/project_detail/pub', {'tableVal':tableVal}, function(message){ console.log(message); }) }) }) 

想要做的很常见的事情,只需将你的js文件重命名为“external.js.php”(我使用的方法,但只要它以php结尾,你真正使用的是什么)然后只需更改src url在你的脚本标签中然后离开你。

不要忘记您可能需要将函数和配置文件包含到javascript中以使该base_url()函数正常工作。

除非你的js文件中需要很多东西的php,否则我建议你不要像上面提到的那样做,也不要将你的js文件重命名为php来解析它。 JS文件最好是静态的。

您可以做的一件事是在php文档的顶部有一个脚本,您可以将base_url变量指定为全局,以供所有js使用:

在您的页面中,包括任何js之前

   

在你的js文件中

 $(document).ready(function(){ $('#update').click(function(){ var tableVal={}; // a bit of php code I need in JS var search_city='; $.post(base_url+'/project_detail/pub', {'tableVal':tableVal},function(message) }) }) }) 

我相信它是可能的,但正如Brian所说,你必须让预处理器知道它需要处理它。 您可以告诉它使用php来处理.js文件(不推荐)或者只是为你的javascript使用.php文件,然后使用:

  

这应该没问题因为mime类型仍然是javascript所以它将被解释为这样。 我从来没有真正试过这个,所以这是猜测,但我相信它应该有效。

只是一个简单的想法,这可以帮助一些人:

我认为(从未尝试过)还有一种方法可以让Web服务器(Apache等)让JS文件作为PHP内容处理。

好处:

  • 无需将JS文件重命名为.js.php
  • 利用缓存
  • 只能应用于特定文件夹(不适用于您网站的每个JS文件)

退出:

  • 不要忘记那些“php”文件在某处被“缓存”,所以不要依赖每次都生成文件的事实。
  • 服务器资源:正如其他答案所述,只有在真正无法将PHP代码放在JS文件之外(例如使用ajax查询)或者不加载服务器的文件时,请务必使用这样的技巧。许多。