首页 > ajax调接口返回数据处理问题

ajax调接口返回数据处理问题

前端小白一个,后台给了一接口,返回数据是这样的`{
"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的方式使用,分为两种调用方式感觉比较靠谱。

【热门文章】
【热门文章】