Ajax:如何调用控制器函数来用新数据更新<option>标签?</option>

时间:2014-08-27 05:05:18

标签: php ajax

我在ajax部分受到攻击,其中我试图调用php控制器函数来更新下拉列表,

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

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

要求知道如何调用ajax中的控制器功能?

1 个答案:

答案 0 :(得分:0)

不知道你是否使用了codeigniter,但我这样做是在codeigniter中这样做的

首先让我展示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

的控制器

它包含两个方法(函数)名称func_first()func_second()

如果我们需要调用func_second()形式的func_first(),那么在codeigniter的情况下我们这样做

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