简体   繁体   中英

Codeigniter base url didn't recognized in javascript

I have an ajax request in my CI application,here is my cstom.js file for that purpose.

$(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);
          }
      });
   });
});  

But the base_url didn't recolonized, when i check the debug console the base_url is printed as the same as the source code like this way.

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

UPDATE

my javascript file is included in a view file

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

The problem is that you are trying to run PHP code inside a JS file. This will not work as PHP code can only run inside files named with a .php extension.

To fix this, you have to set a global variable in Javascript to hold the value of your base_url

so if you want to include a JS file you should first define the variable like in the following example:

index.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>

custom.js

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

Declare var base_url in your header file

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

In the template, I put this :

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

And then in then main.js like this :

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

It will send you to "yoursite.com/user/logout"...

Edit : The "lobtn" is an ID from your Logout Button...

<?php echo base_url();?>

The PHP code does not execute in js file. You have to declare var base_url = "<?php echo base_url();?>"; in a PHP file such as template file as a global variable.

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

You can do one thing copy above code and paste it to your header file

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM