Jquery 如何使JSON数据动态化以在选择第一个下拉列表后获取值
在从一个查询中选择选项后,我将从查询中获取值 表,它填充来自ajax的数据并返回一个JSON 问题是,我正在动态地接收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({
$(文档).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
}