我只是想知道是否可以使用包含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代码是问题所在。有什么想法吗?非常感谢。
答案 0 :(得分:22)
您可以将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);
})
})
})
答案 1 :(得分:2)
想要做的很常见的事情,只需将你的js文件重命名为“external.js.php”(我使用的方法,但只要它以php结尾,你真正使用的是什么)然后只需更改脚本标记中的src url即可离开。
不要忘记你可能需要在javascript中包含函数和配置文件,以便该base_url()函数能够正常工作。
答案 2 :(得分:2)
除非你的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)
})
})
})
答案 3 :(得分:1)
我相信这是可能的,但正如Brian所说,你必须让预处理器知道它需要处理它。您可以告诉它使用php来处理.js文件(不推荐)或者只是为你的javascript使用.php文件,然后使用:
<script type="text/javascript" src="<?= base_url();?>js/external.php"></script>
这应该没问题因为mime类型仍然是javascript所以它将被解释为这样。我从来没有尝试过这个,所以这是猜测,但我相信它应该有用。
答案 4 :(得分:0)
只是一个简单的想法,这可以帮助一些人:
我认为(从未尝试过)还有一种方法可以让Web服务器(Apache等)让JS文件作为PHP内容处理。
优点:
撤回申请: