javascript - ajax调接口返回数据处理问题
高洛峰
高洛峰 2017-04-11 11:03:11
[JavaScript讨论组]

前端小白一个,后台给了一接口,返回数据是这样的`{
"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来显示不同的分类。

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(5)
阿神

和取父级name相同的方式啊,比如result.data[i].children[j].name

根据id来显示不同的分类,可以先把ajax返回的数据保存起来。
根据父级的数据,在页面上生成一个多选框或者下拉列表来选择分类,选择分类时取得所选分类的id,在ajax返回的数据里面找到对应id的父级,显示它的children的数据。

天蓬老师

一直往下点就可以了,知道点到你要的字段。

PHP中文网

你这个数据有点怪啊,第一个children是个json对象,后面都是数组对象。叫后台统一一下吧,取值的话一直往下取就行了,就像jq链式的那种感觉

伊谢尔伦

你可以用遞迴

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);
阿神

业务上看,id为0应该不和其他id值类型在同一场景调用(一类是秒杀一类是商品类型分类),所以children格式不一样也可以理解。那么你可以用调用父级name的方式使用,分为两种调用方式感觉比较靠谱。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号