Codeigniter base_url() not working properly for aj

2019-01-28 13:57发布

问题:

Using base_url() in ajax for getting the from database in codeigniter project. Given base_url is like http://domainname.com. It's works fine. If may i type my url like http://www.domainname.com in address bar it's not working. The code is

$.ajax
 ({
    type: "POST",
    url: base_url+'autocomplete/get_caste_list',
    data: {religion:$('#religion').val(),'csrf_test_name': csrf_value},
     cache: false,
     success: function(html)
        {
       $("#caste").html(html);
        } 
   });

Please help to solve this issue. Thanks

回答1:

In my point of view the best solution is:

Just add the following script in header section of HTML.

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

Then in your Ajax code use BASE_URL as a variable. Means:

$.ajax
({
    type: "POST",
    url: BASE_URL+'autocomplete/get_caste_list',
    data: {religion:$('#religion').val(),'csrf_test_name': csrf_value},
    cache: false,
    success: function(html)
    {
        $("#caste").html(html);
    } 
});

Use your base url as following way:

$config['base_url'] = "http://{$_SERVER['HTTP_HOST']}/";

Very simple solution.



回答2:

base_url() is a CodeIgniter(PHP) function,

You are treating it like a javascript variable.

Change to:

url: '<?php echo base_url();?>autocomplete/get_caste_list',


回答3:

You are using a php variable as a javascript.

This is the right way of using it:

$.ajax
({
type: "POST",
url: '<?=base_url()?>autocomplete/get_caste_list',
data: {religion:$('#religion').val(),'csrf_test_name': csrf_value},
 cache: false,
 success: function(html)
    {
   $("#caste").html(html);
    } 
});


回答4:

you have to declare var base_url in your header file

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