相互依赖的下拉菜单不适用于 uri 段,但在 Codeigniter 中则不行

Interdependant dropdowns dont work with uri segment but without they do in Codeigniter

我有这个一般性问题。可能它太大而无法回答,因为可能有多种解释。但是我是初学者,看不懂

我有多个相互依赖的下拉列表(即下一个加载选择第一个,比如城市、州、地区、城市)。

在我的一个控制器功能中,它们都工作正常。 (当我post新上市时)。

我使用与第一个方法相同的方法创建了第二个函数(唯一的区别是我有 URI-> 段)。

现在我发现如果我加载第二个函数的路径而不输入 id,它工作正常但是如果我添加 .../43(或任何 id)第二个下拉列表永远不会加载。

请推荐..

控制器功能不起作用

public function add_new_listing() {
    $id = $this->uri->segment(3);

    $this->load->model('admin/model_users');
    $data['list'] = $this->model_users->getCountry();

    $this->load->view('view', $data);
}

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

    $this->load->model('admin/model_users');
    $result=$this->model_users->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('v_country_id,v_country_name');
    $this->db->from('vbc_country');
    $this->db->order_by('v_country_name', 'asc'); 
    $query=$this->db->get();
    return $query; 
}

function getData($loadType,$loadId){
    if($loadType=="state"){
        $fieldList='id,v_state_name as name';
        $table='vbc_state';
        $fieldName='country_id';
        $orderByField='v_state_name';                       
    }elseif($loadType == "region"){
        $fieldList='id,v_state_region_name as name';
        $table='vbc_state_region';
        $fieldName='state_id';
        $orderByField='v_state_region_name';
    }else{
        $fieldList='id,v_city_name as name';
        $table='vbc_city';
        $fieldName='state_region_id';
        $orderByField='v_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; 
}

并查看:

<select name="v_item_country" onchange="selectState(this.options[this.selectedIndex].value)">
<option value="0">Select Country</option>
    <?php foreach($list->result() as $listElement): ?>
        <option value="<?= $listElement->v_country_id?>"><?= $listElement->v_country_name?></option>
    <?php endforeach; ?>
</select>

<select name="v_item_state" id="state_dropdown" onchange="selectRegion(this.options[this.selectedIndex].value)">
<option value="0">Select State</option>
</select>

<select name="v_item_region" id="region_dropdown" onchange="selectCity(this.options[this.selectedIndex].value)">
<option value="0">Select Region</option>
</select>

<select name="v_item_city" id="city_dropdown">
<option value="0">Select City</option>
</select>

JS代码:

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

function selectRegion(state_id){
    if(state_id!="0"){
        loadData('region',state_id);
        $("#city_dropdown").html("<option value='0'>Select city</option>");
    }else{
        $("#region_dropdown").html("<option value='0'>Select Region</option>");
        $("#city_dropdown").html("<option value='0'>Select city</option>");
    }
}

function selectCity(state_region_id){
    if(state_region_id!="0"){
        loadData('city',state_region_id);
    }else{
        $("#city_dropdown").html("<option value='0'>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='0'>Select "+loadType+"</option>");  
            $("#"+loadType+"_dropdown").append(result);  
        }
    });
}

我很确定 public function add_new_listing() 需要一个参数来加载它。试试这个:public function add_new_listing($param = null)