Php 如何通过在CodeIgniter中从mysql数据库中选择国家/地区下拉列表中的值来填充城市下拉列表

Php 如何通过在CodeIgniter中从mysql数据库中选择国家/地区下拉列表中的值来填充城市下拉列表,php,Php,我在第一个下拉列表中选择国家,试图找到如何填充城市下拉列表的解决方案,但我不了解可用的解决方案。我从数据库填充了第一个下拉列表,但由于不了解Ajax,我无法填充第二个下拉列表。请提供ajax或jquery的完整代码,说明如何通过选择第一个来填充第二个 查看 <div class="form-group"> <label for="" class="col-md-4 control-label">City</label> <div clas

我在第一个下拉列表中选择国家,试图找到如何填充城市下拉列表的解决方案,但我不了解可用的解决方案。我从数据库填充了第一个下拉列表,但由于不了解Ajax,我无法填充第二个下拉列表。请提供ajax或jquery的完整代码,说明如何通过选择第一个来填充第二个

查看

<div class="form-group">
    <label for="" class="col-md-4 control-label">City</label>
    <div class="col-md-8 text center">
        <select class="form-control" name="city" id="city">
        <?php foreach($cityData as $data){

                    $id = $data->city_id;
                    $country_name =$data->city_name;
                ?>

            <option value="<?php echo $id; ?>"><?php echo $city_name; ?></option>

            <?php } ?>
        </select>   

    </div>
</div>

<div class="form-group">
    <label for="" class="col-md-4 control-label">Country</label>
    <div class="col-md-8 text center">
        <select class="form-control" class="country" name="country">
            <option value="">Select Country</option>
            <?php foreach($countryData as $data){

                    $id = $data->country_id;
                    $country_name =$data->country_name;
                ?>

            <option value="<?php echo $id; ?>"><?php echo $country_name; ?></option>

                <?php } ?>
        </select>                                           
    </div>
</div>

注意:我假设您有国家、城市和州表

<script>    
$(document).ready(function(){
    $("select.country").change(function(){
        var selectedCountry = $(".country option:selected").val();
        $.ajax({
            type: "POST",
            url: "../form_controller/populate_cities",
            data: { country : selectedCountry } 
        });.done(function(data){
            $("#city").html(data);
        });
    });
});
</script>
此代码的工作方式:-当页面加载时,此时调用控制器索引函数并触发模型函数getCountry(),该函数检索所有可用的国家名称并将其传递给视图。当country下拉列表值更改时,它将调用一个ajax函数selectState(当前国家id),此ajax函数将调用controller loadData(),此函数将调用一个模型函数loadData(过滤器类型,如state或city),在此基础上,此模型函数将返回数据。对于状态淹没更改,遵循相同的过程,但使用不同的java脚本函数selectCity(state id)函数,并遵循前面的流程。java脚本函数调用loadData js函数来加载数据

Java脚本代码:-

function selectState(country_id){
  if(country_id!="-1"){
    loadData('state',country_id);
    $("#city_dropdown").html("<option value='-1'>Select city</option>");
  }else{
    $("#state_dropdown").html("<option value='-1'>Select state</option>");
    $("#city_dropdown").html("<option value='-1'>Select city</option>");
  }
}

function selectCity(state_id){
  if(state_id!="-1"){
   loadData('city',state_id);
  }else{
   $("#city_dropdown").html("<option value='-1'>Select city</option>");
  }
}

function loadData(loadType,loadId){
  var dataString = 'loadType='+ loadType +'&loadId='+ loadId;
  $("#"+loadType+"_loader").show();
  $("#"+loadType+"_loader").fadeIn(400).html('Please wait... <img src="image/loading.gif" />');
  $.ajax({
    type: "POST",
    url: "loadData",
    data: dataString,
    cache: false,
    success: function(result){
      $("#"+loadType+"_loader").hide();
      $("#"+loadType+"_dropdown").html("<option value='-1'>Select "+loadType+"</option>");
      $("#"+loadType+"_dropdown").append(result);
    }
 });
}
public function index()
{
   $this->load->model('model');
   $result['list']=$this->model->getCountry();
   $this->load->view('top');
   $this->load->view('index',$result);
   $this->load->view('footer');
}

 public function loadData()
 {
   $loadType=$_POST['loadType'];
   $loadId=$_POST['loadId'];

   $this->load->model('model');
   $result=$this->model->getData($loadType,$loadId);
   $HTML="";

   if($result->num_rows() > 0){
     foreach($result->result() as $list){
       $HTML.="<option value='".$list->id."'>".$list->name."</option>";
     }
   }
   echo $HTML;
 }

让我们看看你试过什么。请格式化你的帖子。嗨@Bilal。谢谢你的提问。但是,请提供您的代码,您从您的终端尝试。这是什么“.请提供ajax或jquery的完整代码”??Stack Overflow不是我将在AllOk提供的教练中心,但我是Stack Overflow的新手,这就是原因,这是我问的第一个问题
public function index()
{
   $this->load->model('model');
   $result['list']=$this->model->getCountry();
   $this->load->view('top');
   $this->load->view('index',$result);
   $this->load->view('footer');
}

 public function loadData()
 {
   $loadType=$_POST['loadType'];
   $loadId=$_POST['loadId'];

   $this->load->model('model');
   $result=$this->model->getData($loadType,$loadId);
   $HTML="";

   if($result->num_rows() > 0){
     foreach($result->result() as $list){
       $HTML.="<option value='".$list->id."'>".$list->name."</option>";
     }
   }
   echo $HTML;
 }
function getCountry()
{
   $this->db->select('id,country_name');
   $this->db->from('country');
   $this->db->order_by('country_name', 'asc');
   $query=$this->db->get();
   return $query;
}

function getData($loadType,$loadId)
{
   if($loadType=="state"){
    $fieldList='id,state_name as name';
    $table='state';
    $fieldName='country_id';
    $orderByField='state_name';
   }else{
    $fieldList='id,city_name as name';
    $table='city';
    $fieldName='state_id';
    $orderByField='city_name';
   }
   $this->db->select($fieldList);
   $this->db->from($table);
   $this->db->where($fieldName, $loadId);
   $this->db->order_by($orderByField, 'asc');
   $query=$this->db->get();
   return $query;
 }