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