使用外部JS文件时,Codeigniter ajax请求不起作用

Codeigniter ajax request is not working when use external JS file

本文关键字:Codeigniter ajax 请求 不起作用 外部 JS 文件      更新时间:2023-09-26

我的Codeigniter ajax 请求在内部嵌入JS工作。但是当我想将其用作外部JS文件时。它不起作用。为什么?

查看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>

主控制器

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

您可以在 JavaScript 的标头或始终加载的视图中创建基本 URL 全局变量

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

和 url 外部 js 文件路径使用此类型

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

首先,你不需要 echo(json_encode($student_data));

其次,你不能只是复制

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

对于外部 JS,在添加外部之前必须传递 base_url()

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

它看起来像 url:base + 'main/testarray'