json数据在前台使用问题,help!!

javaliuliu 2013-07-03 11:25:38
我在前台使用json数据时遇见了问题,现在请大家帮忙看看。
action中我把一个对象转为json格式,用responsewrite写到前台的代码如下:

ChartPageInfo info = chartInfoHelper(alist,"1",f);
JSONArray ja = JSONArray.fromObject(info);
System.out.println(ja);//打印出的数据是:[{"categories":"['政务内网门户','电子邮件系统','综合办公平台','通讯录']","data":"[11,4,34,19]","title_text":""}]
responseWrite(ja.toString());


前台使用代码如下:

$.post("queryuserchart.action",{
curPage:$(this).val()
},
function(data,status){
alert(data.categories);//undefine
if('success'==status){
drawChart(data.categories,data.data);
}
},
"json"
);

alert data.categories为undefine.
...全文
195 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
BUG胡汉三 2013-07-03
  • 打赏
  • 举报
回复
引用 5 楼 hzw2312 的回复:

//json 中 "[]"代表数据  "{}" 代表对象 两者可以相互嵌套 
			//访问json数据时、也是根据[]跟{}来判断的
			//[]开头、那么就要加上下标访问
			jsonStr = [{"categories":"['政务内网门户','电子邮件系统','综合办公平台','通讯录']","data":"[11,4,34,19]","title_text":""}];
			alert(jsonStr[0].categories);  
			for(var i = 0; i < jsonStr.length; i++){
				var jsonS = jsonStr[i];
				alert(jsonS.categories);   
			}  
			
			//如果你没有更多的对象了、那么把外面的“[]”去掉就可以直接访问对象了
			jsonStr2 = {"categories":"['政务内网门户','电子邮件系统','综合办公平台','通讯录']","data":"[11,4,34,19]","title_text":""};
			alert(jsonStr2.data); 
json 中 "[]"代表数据 错字了~代表数组!!!
BUG胡汉三 2013-07-03
  • 打赏
  • 举报
回复

//json 中 "[]"代表数据  "{}" 代表对象 两者可以相互嵌套 
			//访问json数据时、也是根据[]跟{}来判断的
			//[]开头、那么就要加上下标访问
			jsonStr = [{"categories":"['政务内网门户','电子邮件系统','综合办公平台','通讯录']","data":"[11,4,34,19]","title_text":""}];
			alert(jsonStr[0].categories);  
			for(var i = 0; i < jsonStr.length; i++){
				var jsonS = jsonStr[i];
				alert(jsonS.categories);   
			}  
			
			//如果你没有更多的对象了、那么把外面的“[]”去掉就可以直接访问对象了
			jsonStr2 = {"categories":"['政务内网门户','电子邮件系统','综合办公平台','通讯录']","data":"[11,4,34,19]","title_text":""};
			alert(jsonStr2.data); 
北吹 2013-07-03
  • 打赏
  • 举报
回复
JSONArray对应的是JSON数组,后台使用JSONObject.fromObject()。
小丑哥_V5 2013-07-03
  • 打赏
  • 举报
回复
$.post(url,params,function(data){ var json = eval('('+data+')'); // 先转成json对象,然后遍历 $.each(json, function(i, v){ alert(v.name); // v是对象,然后v.xx属性 }); });
ZHOU西口 2013-07-03
  • 打赏
  • 举报
回复
对了,你返回的是一个json数组,不能直接取属性,需要在循环中获取!
ZHOU西口 2013-07-03
  • 打赏
  • 举报
回复
$.getJSON('queryuserchart.action',function(data){} ----------------- 用上面的获取
javaliuliu 2013-07-03
  • 打赏
  • 举报
回复
ok,谢谢大家,我已经改正了,确实要加下标。 这样写就可以取到值了:
title=data[0].title;
		c=data[0].categories;
		d=data[0].data;	

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧