前端小白一个,后台给了一接口,返回数据是这样的`{
"code": 1,
"msg": "操作成功",
"data": [
{
"id": 0,
"name": "限时秒杀",
"children": {
"0": {
"id": 101,
"name": "10:00开抢"
},
"2": {
"id": 103,
"name": "16:00开抢"
},
"3": {
"id": 104,
"name": "18:00开抢"
}
}
},
{
"id": 1,
"name": "休闲零食",
"children": [
{
"id": 5,
"name": "膨化食品"
}
]
},
{
"id": 2,
"name": "洗护用品",
"children": [
{
"id": 7,
"name": "面部护理"
}
]
},
{
"id": 3,
"name": "酒水饮料",
"children": [
{
"id": 6,
"name": "白酒"
}
]
},
{
"id": 4,
"name": "地方特产",
"children": [
{
"id": 8,
"name": "干货"
}
]
}
]
}`
我现在用ajax调用,想知道children下的name怎么表示,父级的name值我用 result.data[i].name来表示,还有怎么根据id来显示不同的分类。
一直往下点就可以了,知道点到你要的字段。
简单分析了一下你的数据结构,你可以参考参考
根据id看类别你可以看看下面的代码:
var obj=cur.data
for(var i=0;i<obj.length;i++){
console.log('这个类别是:'+obj[i].name);
}
你可以用遞迴
function print_category(cat, level){
if (cat.constructor == Object){
cat = $.map(cat, function(value, index) {
return [value];
});
};
for(var i=0;i<cat.length;i++){
console.log(Array(level).join("--") + cat[i].name);
if (cat[i].children !==undefined){
print_category(cat[i].children, level+1);
}
}
}
console.clear();
print_category(data, 1);
你这个数据有点怪啊,第一个children是个json对象,后面都是数组对象。叫后台统一一下吧,取值的话一直往下取就行了,就像jq链式的那种感觉
和取父级name相同的方式啊,比如result.data[i].children[j].name
根据id来显示不同的分类,可以先把ajax返回的数据保存起来。
根据父级的数据,在页面上生成一个多选框或者下拉列表来选择分类,选择分类时取得所选分类的id,在ajax返回的数据里面找到对应id的父级,显示它的children的数据。
业务上看,id为0应该不和其他id值类型在同一场景调用(一类是秒杀一类是商品类型分类),所以children格式不一样也可以理解。那么你可以用调用父级name的方式使用,分为两种调用方式感觉比较靠谱。