我正在尝试根据下拉列表中的选定状态获取城市名称列表,但我在下拉选项中得到“未定义”。我认为我的javascript代码有问题,但我不知道它是什么。
我的ajax功能:
function getcities(obj) {
var stateid = obj.val();
$.ajax({
url:base_url+'home/get_cities',
type:'POST',
data:{ 'state_id':stateid},
success:function(response){
var temp = $.parseJSON(response);
if(temp.status == 'success') {
var cities = temp.data;
var opts = '';
var optsli = '';
$.each(cities,function(key,value){
opts+='<option value="'+value.id+'">'+value.name+'</option>';
optsli+='<li data-raw-value="'+value.id+'" class="">'+value.name+'</li>';
});
$("#city").html(opts);
$("#city").next(':eq(0)').next().html(optsli);
}
else {
return false;
}
}
});
}
我的控制器功能在home.php文件中:
public function get_cities() {
$state_id = $this->input->post('state_id');
$results = $this->Common_model->get_cities($state_id);
if( count($results) > 0 )
{
$response['status'] = 'success';
$response['data'] = $results;
}
else {
$response['status'] = 'error';
$response['data'] = '';
}
echo json_encode($response);
// exit;
}
我的模特中的功能:
function get_cities($state_id)
{
$response = array();
$this->db->where('state_id',$state_id);
$query = $this->db->get('cities')->result_array();
if( is_array( $query ) && count( $query ) > 0 )
{
$response['0'] = 'Select City';
foreach($query as $row)
{
$response[$row['id']] = $row['name'];
}
}
return $response;
}
我的观点中的州和城市下拉列表:
<div class="form-group">
<?php echo form_label('State', 'state'); ?>
<div class="selectpickercolm personal clearfix">
<div class="slctn">
<?php echo form_dropdown('state', $states, $user['state'],array('id' => 'state','class' => 'form-control','onchange' => 'getcities($(this))')); ?>
</div>
</div>
</div>
<div class="form-group">
<?php echo form_label('City', 'city'); ?>
<div class="selectpickercolm personal clearfix">
<div class="slctn">
<?php echo form_dropdown('city', $cities, $user['city'],array('id' => 'city','class' => 'form-control')); ?>
</div>
</div>
</div>
答案 0 :(得分:1)
如下所示: -
function getcities(obj) {
var stateid = obj.val();
$.ajax({
url:base_url+'home/get_cities',
type:'POST',
dataType:'json', //change here
data:{ 'state_id':stateid},
success:function(response){
var temp = response; //change here
if(temp.status == 'success') {
var cities = temp.data;
var opts = '';
var optsli = '';
$.each(cities,function(key,value){
opts+='<option value="'+key+'">'+value+'</option>';
//optsli+='<li data-raw-value="'+value.id+'" class="">'+value.name+'</li>';
});
$("#city").html(opts);
//$("#city").html(optsli);
}
else {
return false;
}
}
});
}