2 sunmeilibea sunmeilibea 于 2015.07.16 16:46 提问

前台js接收后台传过来的json数据

前台js接收后台传过来的json数据
前台怎么将json数据根据“名称”字段进行分组,并分别显示组名和每一个组有多少条记录

4个回答

danielinbiti
danielinbiti   Ds   Rxr 2015.07.16 17:01
已采纳
类似下面这样,根据name分组
 <script>
 var json="[{name:'class1',s:'perter'},{name:'class1',s:'daniel'},{name:'class2',s:'king'}]";
var jsonObj = eval('('+json+')');
var obj={};
for(var i=0;i<jsonObj.length;i++){
  var key = jsonObj[i].name;
  if(!obj[key]){
     obj[key]=[];
  }
  obj[key][obj[key].length]=jsonObj[i].s;
}
for(var k in obj){
  alert(obj[k]);
}
</script>
sunmeilibea
sunmeilibea 如果我同时按照名称和性别分组,怎么办
大约 2 年之前 回复
sunmeilibea
sunmeilibea 回复danielinbiti: 已采纳 谢谢
2 年多之前 回复
danielinbiti
danielinbiti 回复sunmeilibea: 不客气,有时间记得采纳一下
2 年多之前 回复
sunmeilibea
sunmeilibea 谢谢你 一直的解答 我已经搞定了 十分感谢
2 年多之前 回复
danielinbiti
danielinbiti 回复sunmeilibea: 如果是弹出页面,把这些信息拼成字符串,参数传入。如果是frame嵌套页面,可以通过js函数方式传入参数。
2 年多之前 回复
sunmeilibea
sunmeilibea 就是我统计好A有17个人,B有1个人,我点击A时,跳转到二级页面,二级页面要求显示17人的年龄,如果我点击B,跳转二级页面,显示1人的年龄
2 年多之前 回复
danielinbiti
danielinbiti 回复sunmeilibea: 二级页面?跳转?
2 年多之前 回复
sunmeilibea
sunmeilibea 恩 这个问题解决了,现在问题是在二级页面,怎么将点击的那个数据带到二级界面
2 年多之前 回复
danielinbiti
danielinbiti 回复sunmeilibea: 你的原始数据呢?从代码来看,没看出逻辑问题。
2 年多之前 回复
sunmeilibea
sunmeilibea $.each(data.items,function(i,result){ key=data.items[i].cpmc; if(!obj[key]) { obj[key]=[]; } obj[key][obj[key].length]={cpmc:data.items[i].cpmc}; for(var k in obj){ for(var i=0;i<obj[k].length;i++) { if(i==obj[k].length-1) { mc=obj[k][i].cpmc; sl=obj[k].length; }}} item = "<tr><td align=left ><a href='KcData.html?sl="+sl+"'>"+mc+"</a></td><td align=left style=DISPLAY:none>"+result.dwid+"</td><td align=left>"+sl+"</td></tr>"; $('#show').append(item); });
2 年多之前 回复
sunmeilibea
sunmeilibea for(var k in obj){ num=obj[k].length;我这个k对应的值为A时,明明有多组, 为什么长度只是1
2 年多之前 回复
sunmeilibea
sunmeilibea 恩 这个我知道 但是还有名字呢,
2 年多之前 回复
sunmeilibea
sunmeilibea 恩 这个我知道 但是还有名字呢,
2 年多之前 回复
sunmeilibea
sunmeilibea 恩 这个我知道 但是还有名字呢,
2 年多之前 回复
sunmeilibea
sunmeilibea 恩 这个我知道 但是还有名字呢,
2 年多之前 回复
danielinbiti
danielinbiti 回复sunmeilibea: 哦,你说同一个名字的多少个人呀。那就简单呀obj[k].length就是同一个名字的有多少人
2 年多之前 回复
sunmeilibea
sunmeilibea 其实你一开始给我的就可以,只不过只能取出最后的那个,前面的那些已经被覆盖了
2 年多之前 回复
sunmeilibea
sunmeilibea 我先实现的是这样的 A名字 多少人,B名字 多少人, 就是把这个信息都显示出来 ,你后来的我没太看懂
2 年多之前 回复
danielinbiti
danielinbiti 回复sunmeilibea: for(var k in obj){ alert(k);//每个name的值 if(obj[i]){ for(var i=0;i<obj[k].length;i++){ alert(obj[k][i].s);//s的值,这里自己可以扩充,sex之类的 } } }
2 年多之前 回复
danielinbiti
danielinbiti 回复sunmeilibea: obj[key][obj[key].length]=jsonObj[i].s;改成obj[key][obj[key].length={s:jsonObj[i].s};
2 年多之前 回复
sunmeilibea
sunmeilibea 还有一个问题啊 就是你alert(obj[k]);如果我想获得name的所有分组名字怎么去取
2 年多之前 回复
sunmeilibea
sunmeilibea 回复danielinbiti: 比如json里面有name,sex,hobby,我想按照name分组,但是sex,hobby的值也都想取出来
2 年多之前 回复
danielinbiti
danielinbiti 回复sunmeilibea: name对应的多个值?没理解,你举个例子出来
2 年多之前 回复
danielinbiti
danielinbiti 回复sunmeilibea: name对应的多个值?没理解,你举个例子出来
2 年多之前 回复
sunmeilibea
sunmeilibea 要是想name对应的多个值都想要呢
2 年多之前 回复
yuke198907
yuke198907   2015.07.16 16:48

这个得一个一个的循环判断吧,你可以在后台的时候判断后,再把结果当json传过来

sunmeilibea
sunmeilibea 不行 如果后台分组的话,传过来的就不是全部数据了,只是分组的组别
2 年多之前 回复
oyljerry
oyljerry   Ds   Rxr 2015.07.16 19:23

javascript处理json很方便
数组就是循环

 function showJSON() {    
    var user =    
    {    
    "username":"andy",    
    "age":20,    
    "info": { "tel": "123456", "cellphone": "98765"},    
    "address":    
    [    
    {"city":"beijing","postcode":"222333"},    
    {"city":"newyork","postcode":"555666"}    
    ]    
    }    
     }    

    alert(user.username);    
    alert(user.age);    
    alert(user.info.cellphone);    
    alert(user.address[0].city);    
    alert(user.address[0].postcode);    
    }   
    alert(user.username);    
    alert(user.age);    
    alert(user.info.cellphone);    
    alert(user.address[0].city);    
    alert(user.address[0].postcode);    
    }   

name对应多个值是不是说name后面是一个数组,数组你就可以循环遍历获取

u012401478
u012401478   2015.07.17 09:45

循环判断++1,,,,,,

Csdn user default icon
上传中...
上传图片
插入图片