5

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>'; }?>
14
  • what is the file extension of your file? Commented Mar 17, 2016 at 4:22
  • its a js file custom.js Commented Mar 17, 2016 at 4:23
  • how you expect that in a js file php will work? Commented Mar 17, 2016 at 4:24
  • the javascript should be located in your view file with the .php extension for it to recognize php code. Commented Mar 17, 2016 at 4:26
  • where is this javascript located? provide the name of the file and the location of the file. Commented Mar 17, 2016 at 4:27

5 Answers 5

14

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");
Sign up to request clarification or add additional context in comments.

Comments

2

Declare var base_url in your header file

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

1 Comment

Nop its again printed the same
1

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

Comments

0
<?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.

Comments

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

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.