0

My Codeigniter ajax request is working when JS inner embed. But when i want to use it as external JS file. It it not working. Why is that?

View sample_ajax

<html>
    <head>
        <title></title>
         <script src='<?= base_url() ?>public/js/jquery.min.js'></script>
         <!--<script src='<?= base_url() ?>public/js/script.js'></script>When put script part on external script.js, it's not working -->       
    </head>
    <body>
         <div>
            <input name="submit1" id="submit1" type="button" value="Load">
        </div>
        <div id="receive" style="height: 50px; background-color: yellowgreen">       
        </div>

        <script type="text/javascript">
        $(document).ready(function () {
            $('#submit1').click(function () {
                $.ajax({
                    url: '<?php echo base_url();?>' + 'main/testarray',
                    dataType: "JSON",
                    type: "POST",
                    success: function (retdata) {
                        $("#receive").html(retdata.name);
                    }
                });
            });
        });
        </script>        
    </body> 
</html>

Main Controller

class Main extends CI_Controller {
    public function test() { 
        $this->load->view('home/sample_ajax'); 
    } 
    public function testarray() {
        $student_data = [
            'name' => 'Sample Name',
            'age' => '26'
        ];
        echo(json_encode($student_data));
    }
}

1
  • please try to echo (json_encode($student_data)); Commented Mar 19, 2016 at 6:58

2 Answers 2

1

you can create base url gloabl variable in javascript in your header or a view that always loading put this code

   <script type="text/javascript">
    var baseURL= "<?php echo base_url();?>";
    </script>

and url external js file path use this type

<script type="text/javascript">
        $(document).ready(function () {
            $('#submit1').click(function () {
                $.ajax({
                    url: baseURL+'main/testarray',
                    dataType: "JSON",
                    type: "POST",
                    success: function (retdata) {
                        $("#receive").html(retdata.name);
                    }
                });
            });
        });
        </script>    
Sign up to request clarification or add additional context in comments.

Comments

1

First you don't need ( ) at echo(json_encode($student_data));

And second you can't just copy

url: ' php echo base_url();' + 'main/testarray'

to external js, you have to pass base_url() before adding external

<script type="text/javascript">
var base = "<?php echo base_url();?>";
</script>
<script src="<?php echo base_url();?>js/yourjavascriptexternal.js"></script>

It will look like url: base + 'main/testarray'

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.