首页 新闻 会员 周边

AJAX前台用用 json.parse提示undefined

0
[已解决问题] 解决于 2015-09-27 22:15

自己封装的AJAX前台用用 json.parse提示undefined,但是我去掉json.parse又可以alert出来

愁见鬼的主页 愁见鬼 | 菜鸟二级 | 园豆:202
提问于:2015-09-27 11:19
< >
分享
最佳答案
0

首先,看你的代码是,是要操作一个json。

那么你ajax返回的数据类型是json 还是字符串呢?如果已经是json就可以直接操作,反之需要json.parse()进行转换。

奖励园豆:5
狂风戏雪 | 菜鸟二级 |园豆:257 | 2015-09-27 20:16

[{"name":"zsfry","age":30,"Email":"@55qq.com"}]

是json的我就是想取出单个,如res.name想输出“zsfry”

愁见鬼 | 园豆:202 (菜鸟二级) | 2015-09-27 20:21

@愁见鬼:知道返回的对象是JSON , 你再对其使用json.parse()得到undefined 似乎也合情合理的。

狂风戏雪 | 园豆:257 (菜鸟二级) | 2015-09-27 20:27

@狂风戏雪: 大哥;那咋样才能取得res.name输出“zsfry”,刚接触json,不太懂

愁见鬼 | 园豆:202 (菜鸟二级) | 2015-09-27 20:43

@愁见鬼: res[0].name,因为你是对list进行序列化,返回的就是一个数组,所以先根据索引获取json对象,再得到他的属性值

狂风戏雪 | 园豆:257 (菜鸟二级) | 2015-09-27 20:52

@狂风戏雪: 怎么还是取不到,能不能帮帮我看看

愁见鬼 | 园豆:202 (菜鸟二级) | 2015-09-27 21:05

@狂风戏雪: @狂风戏雪: 大哥,祝您中秋节快乐,阖家团圆!可以了,非常感谢!

愁见鬼 | 园豆:202 (菜鸟二级) | 2015-09-27 21:11
其他回答(2)
0

你不贴代码怎么看

稳稳的河 | 园豆:4216 (老鸟四级) | 2015-09-27 12:00

function go() {
            ajax("../Handler2.ashx", function (resText) {
              //  alert(resText);
                var res = JSON.parse(resText);
                alert(res.age);
            })
        }

后台是一个List集合发送给前台的,我用alert可以把Liste像显示在页面,就是 说"resText"是有数据的,用JSON.parse就不行了,找不到数据

后台数据;

 List<Person> person = new List<Person>();          
            person.Add(new Person { age = 30, name = "zsfry", Email = "@55qq.com" });
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            context.Response.Write( serializer.Serialize(person));

支持(0) 反对(0) 愁见鬼 | 园豆:202 (菜鸟二级) | 2015-09-27 15:11

@愁见鬼: JSON.parse()之可以解析json格式的数据,并且会对要解析的字符串进行格式检查,如果格式不正确则不进行解析,而eval()则可以解析任何字符串,eval是不安全的,所以resText不是一个标准的json对象,你用c#的JSON.NET包的 JsonConvert.SerializeObject转吧,要么自己写个方法转,可能你的序列化有问题

支持(1) 反对(0) 稳稳的河 | 园豆:4216 (老鸟四级) | 2015-09-27 20:41
0

如果内部使用的是eval方法,可以参见我的这一篇博客。

http://www.cnblogs.com/xinhuan/p/4829974.html

CodeOddity | 园豆:167 (初学一级) | 2015-09-27 14:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册