Codeigniter base url 在 javascript 中无法识别


Codeigniter base url didn't recognized in javascript

我的 CI 应用程序中有一个 ajax 请求,这是我的 cstom.js 文件。

$(document).ready(function(){
    var base_url='<?php echo base_url();?>';
   $('#add-ct').click(function(){      
      $.ajax({
          url:base_url+'stockmanagement/add_category',
          data:{category:$('#category').val()},
          success:function(data){
              alert(data);
          },
          error:function(err){
              alert('error'+err);
          }
      });
   });
});  

但是base_url并没有重新殖民,当我检查调试控制台时,base_url的打印方式与源代码相同。

var base_url='<?php echo base_url(); ?>';

更新

我的 JavaScript 文件包含在视图文件中

<?php if($page=='add-category'){ echo '<script src="'.base_url().'/assets/js/custom.js"></script>'; }?>

问题是您正在尝试在JS文件中运行PHP代码。这将不起作用,因为 PHP 代码只能在以 .php 扩展名命名的文件中运行。

要解决此问题,您必须在 Javascript 中设置一个全局变量来保存base_url的值

因此,如果要包含JS文件,则应首先定义变量,如以下示例所示:

索引.php

<html>
  <head>
    <!-- SET GLOBAL BASE URL -->
    <script>var base_url = '<?php echo base_url() ?>';</script>
    <script src="/assets/js/custom.js"></script>
  </head>
  <body>
  </body>
</html>

定制.js

//now we can reference the base_url
alert(base_url+"some/other");

头文件中声明 var base_url

<script>
var base_url = "<?php echo base_url();?>";
</script>

在模板中,我把这个:

<script>
  var base_url = "<?= base_url(); ?>";
</script>
<script src="<?= base_url('assets/js/main.js'); ?>">

然后在然后 main 中.js像这样:

function logout(){
    var element = document.getElementById("lobtn");
    location.href = base_url+"user/logout";
}

它会把你送到"yoursite.com/user/logout"...

编辑:"lobtn"是注销按钮的 ID...

<?php echo base_url();?>

PHP 代码不会在 js 文件中执行。您必须声明 var base_url = "<?php echo base_url();?>"; PHP 文件(如模板文件)中作为全局变量。

<script>
    var base_url = "<?php echo base_url();?>";
</script>

您可以做一件事复制上面的代码并将其粘贴到头文件中