我有这个一般性的问题。可能它的答案太大了,因为可能有几个解释。但我是初学者,无法理解。
我有多个相互依赖的下拉列表(即首先选择的下一个加载,如城市,州,地区,城市)。
在我的一个控制器功能中,它们都可以正常工作。 (当我发布新的列表时)。
我创建了第二个函数,其方法与我首先使用的方法相同(唯一的区别是我有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);
}
});
}
答案 0 :(得分:1)
我很确定public function add_new_listing()
需要一个参数才能加载它。试试这个:public function add_new_listing($param = null)