[英]Use PHP code in external Javascript file
我只是想知道是否可以使用包含 PHP 代码的外部 JS 文件。
我的外部 JS
$(document).ready(function(){
$('#update').click(function(){
var tableVal={};
// a bit of php code I need in JS
var search_city=<?php echo $_SESSION['search_city'];?>';
$.post('<?=base_url()?>/project_detail/pub', {'tableVal':tableVal},function(message)
})
})
})
我的查看页面
<script type="text/javascript" src="<?= base_url();?>js/external.js"></script>
JS 不起作用,因为我认为 JS 中的 PHP 代码是问题所在。 有什么想法吗? 非常感谢。
您可以通过将您的js
文件重命名为php
并在script
标记src
使用此链接来实现(如其他答案中所述)
虽然这似乎是一种很好且简单的方法,但有很多理由不这样做。
js
文件的每个请求都需要php
)您可以简单地更改为这样的东西来完成它(以更好的方式,IMO):
<script type="text/javascript">
var Settings = {
base_url: '<?= base_url() ?>',
search_city: '<?= $_SESSION['search_city'] ?>'
}
</script>
<script type="text/javascript" src="<?= base_url();?>js/external.js"></script>
比你的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 之前
<script type="text/javascript">var base_url = "<?= base_url();?>";</script>
<script type="text/javascript" src="<?= base_url();?>js/external.js"></script>
在你的 js 文件中
$(document).ready(function(){
$('#update').click(function(){
var tableVal={};
// a bit of php code I need in JS
var search_city=<?php echo $_SESSION['search_city'];?>';
$.post(base_url+'/project_detail/pub', {'tableVal':tableVal},function(message)
})
})
})
我相信这是可能的,但正如布赖恩提到的,你必须让预处理器知道它需要处理它。 您可以告诉它使用 php 来处理 .js 文件(不推荐)或简单地为您的 javascript 使用 .php 文件,然后使用:
<script type="text/javascript" src="<?= base_url();?>js/external.php"></script>
这应该没问题,因为 mime 类型仍然是 javascript,所以它将以这种方式解释。 我从来没有真正尝试过这个,所以这是一个猜测,但我相信它应该有效。
只是一个快速的想法,可以帮助一些人:
我认为(从未尝试过)还有一种方法可以要求 Web 服务器(Apache 等)让 JS 文件作为 PHP 内容处理。
好处:
提款:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.