Ajax:如何调用控制器函数来更新<;选项>;带有新数据的标记


Ajax: How to call a controller function to update the <option> tags with new data?

我是ajax部分的Struck,我正试图调用php控制器函数来更新下拉列表

场景2下拉列表,1) 国家,2) 城市

根据从国家下拉列表中选择的国家,我需要在城市下拉列表中启用城市列表,同时尝试显示该国家和所选城市的可用酒店。

请求知道如何在ajax中调用控制器函数?

不知道你是否在使用codeigniter,但我用这种方式在codeigniters中使用

首先让我展示一下td_country和td_city表

|-----------------------------------------------------|
|    country_id     |       country_title             |
|-----------------------------------------------------|
|       1           |           India                 |
|-----------------------------------------------------|
|       2           |         Sri Lanka               |
|-----------------------------------------------------|

和td_city

|----------------------------------------|
| city_id |   city_title |   country_id  |
|----------------------------------------|
|    1    |   Delhi      |       1       |
|----------------------------------------|
|    2    |   Columbo    |       2       |
|----------------------------------------|

这将是您的浏览页面

<script type="text/javascript">
function get_city(country)
    {
        $.post("<?php echo base_url();?>ajax/get_city",{'country':country},
        function(data) 
        {
            $('option', '#city').remove();
            content ="<option value=''>Select City</option>";
            $('#city').append(content);
            for(i=0;i<data.length;i++)
            {
                    content ="<option value="+data[i].city_id+">"+data[i].city_title+"</option>";
                    $('#city').append(content);
            }
        }, "json");
    }
</script>

<select id="country" name="country" onchange="get_city(this.value)">
<option value="">Select Country</option>
<?php
foreach($country as $c)
 {?>
<option value="<?php echo $c['country_id'];?>"><?php echo $c['country_title'];?></option>
<?php
 }?>
</select>
<select id="city" name="city">
<option value="">Select City</option>
</select>

现在在ajax.php控制器中,这是脚本

<?php
class ajax extends CI_Controller{
    public function __construct() {
        parent::__construct();
    }
public function get_city()
    {
        $country_id=$_POST['country'];
        $city=$this->db->query("SELECT * FROM td_city WHERE td_city.country_id = '$country_id'")->result_array();     
        $data['city'] = json_encode($city);
        echo $data['city'];
    }
}
?>

因此建议

[EDIT: as asked by OP in the comments]

假设我有一个名为common.php 的控制器

并且它包含两个方法(函数)名称CCD_ 2和CCD_。

如果我们需要从func_first()形式调用func_cond(),那么在代码点火器的情况下,我们这样做

<?php
class common extends CI_Controller{
    public function __construct() {
        parent::__construct();
    }
function func_first()
   {
     $var = $this->func_second();
   }
function func_second()
   {
     $ret = 1;
     return $ret;
   }
}
?>