Jquery 如何使JSON数据动态化以在选择第一个下拉列表后获取值

Jquery 如何使JSON数据动态化以在选择第一个下拉列表后获取值,jquery,json,ajax,codeigniter,Jquery,Json,Ajax,Codeigniter,在从一个查询中选择选项后,我将从查询中获取值 表,它填充来自ajax的数据并返回一个JSON 问题是,我正在动态地接收JSON中的值,但我正在接收 只传递第一个值,所以。。我怎样才能使这种动态成为我的目标 结果:什么是价值观以及使其动态化的关键 $(文档).ready(函数(){ $('#cate')。更改(功能(e){ e、 预防默认值(); var cate=$(“#cate选项:选中”).val(); var url=“cat_cntrl/subcatselect”; $.ajax({

在从一个查询中选择选项后,我将从查询中获取值 表,它填充来自ajax的数据并返回一个JSON 问题是,我正在动态地接收JSON中的值,但我正在接收 只传递第一个值,所以。。我怎样才能使这种动态成为我的目标 结果:什么是价值观以及使其动态化的关键


$(文档).ready(函数(){
$('#cate')。更改(功能(e){
e、 预防默认值();
var cate=$(“#cate选项:选中”).val();
var url=“cat_cntrl/subcatselect”;
$.ajax({
类型:'post',
url:url,
数据:{cate:cate},
数据类型:“JSON”,
成功:功能(响应){
控制台日志(响应);
if(response.result){
$(response.result)。每个(函数(k,v){
$('#myselect')。附加($(''){
值:v['Mobile'],
文本:v['Mobile']
}));
})
}
}
})
})
})
这里是我的控制器代码:

<?php
class Cat_cntrl extends CI_controller{
    public function __construct(){
        parent::__construct();
        $this->load->model('cat_model');
        $this->load->helper('form','url');
    }

    public function index(){
        $get=$this->cat_model->fetchcatdata();
        $data['result']=$get;
        $this->load->view('cat_view',$data);
    }
    public function subcatselect(){
        $cate=$this->input->post('cate');
        $get=$this->cat_model->getsubo($cate);
        $data['result']=$get;
        echo json_encode(array('result'=>$data['result']));
    }
}
?>

当您在不使用特定键的情况下更改父类别和用途时,必须清除您的
mySelect
下拉列表,例如

if (response.result.length) {
    $('#myselect').empty();// make it empty if new child category is found
    $(response.result).each(function(key, obj) {
      $.each(obj, function(k, v){ 
        $('#myselect').append($('<option>', {
          value: v,
          text: v
        }));
      }); // end each obj
    }); // end each response.result
}
if(响应.结果.长度){
$('#myselect').empty();//如果找到新的子类别,则将其设为空
$(response.result)。每个(函数(键,obj){
$.each(obj,function(k,v){
$('#myselect')。附加($(''){
值:v,
正文:v
}));
});//结束每个对象
});//结束每个响应。结果
}
片段,

var结果={
“汽车”:[{
“汽车”:“宝马”
}, {
“汽车”:“奥迪”
}],
“移动”:[{
“移动”:“HTC”
}, {
“手机”:“三星”
}]
}
功能更改Cat(结果){
$('#myselect').empty();//如果找到新的子类别,则将其设为空
result.length&$(result).每个(函数(键,obj){
$。每个(对象、功能(k、v){
$('#myselect')。附加($(''){
值:v,
正文:v
}));
});
});
}
$('button[data type]')。在('click',function()上{
changeCat(结果[$(this).attr('data-type'));
});


选择汽车

选择移动
您可以像这样动态地访问

var json=json.parse(“{”result:[{”car:“bmw”},{”car:“xuv”}]});
//log(json.result);
$.each(json.result、函数(键、值){
for(var输入值){
console.log(值[key]);
}
});

您可以输入控制器功能的代码吗?这样我们就可以看到您返回到ajax调用的内容了?这里不需要使用
preventDefault()
,而是使用
var cate=this.value
而不是
var cate=$(“#cate选项:选中”).val()。我想,你的问题对用户来说不太清楚,你能详细解释一下吗
没有在更改下拉列表中填充
#cate
?我已经替换了此选项,但它不起作用。请再解释一点。这真的很难理解。你的意思是你没有理解我的意思,我得到了正确的json,但如果v['mobile],我想让mobile变成动态的不来的时候,它显示空白,所以我希望它动态(v['Mobile']==TRUE){value:v['Mobile'],text:v['Mobile']}如果(v['car']==TRUE){value:v['car'],text:v['car']我可以这样使用吗?如果你有数百个类别怎么办?如果你使用我的答案,你就不必担心类别的数量。但条件是你必须以
category:value
格式传递响应。
if (response.result.length) {
    $('#myselect').empty();// make it empty if new child category is found
    $(response.result).each(function(key, obj) {
      $.each(obj, function(k, v){ 
        $('#myselect').append($('<option>', {
          value: v,
          text: v
        }));
      }); // end each obj
    }); // end each response.result
}