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

Fly*_*Cat 16 javascript jquery codeigniter

我只是想知道是否可以使用包含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)

        })
    })
})
Run Code Online (Sandbox Code Playgroud)

我的观点页面

<script type="text/javascript" src="<?= base_url();?>js/external.js"></script>
Run Code Online (Sandbox Code Playgroud)

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

Jui*_*ter 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>
Run Code Online (Sandbox Code Playgroud)

比你的内容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);
    })
  })
})
Run Code Online (Sandbox Code Playgroud)