首页 新闻 会员 周边 捐助

asp.net利用JQuery获取JSON,无法转换为对象

0
悬赏园豆:100 [已解决问题] 解决于 2013-06-21 15:28

如题
客户端的JS是这样写的:
    $.getJSON("/tools/submit_ajax.ashx?action=user_job_education_edit&id=" + id, function (json) {
        alert(json);
    });

通过火狐的firebug查看到返回的是HTML格式的JSON数据:

{"jobeduinfo": [{"id":"1","userid":"299","fromyear":"2003","frommonth":"6","toyear":"2010","tomonth":"7","school":" 湖北大学","profession":"","degree":"6","contents":"360要推便携路由器,个人觉得其主要目的是盯住了用 户无线设备上的信息。因为如果用户移动设备都通过它这个路由器走的话,未加密的数据全部在他掌控之中。 其实Windows 7以上的系统是非常容易建立无线热点的,为了更容易地实现将PC作为无线热点的功能,写了个小工具,希望大家少去用360这种危险的东西。 实现原理其实很简单,调用命令行,运行一下几条命令:"}]}

请问如何转换为JSON对象

eval  $.parseJSON 都试过了!

问题补充:

终于找到解决办法了!

问题在于:服务器端返回的汉字内容中包含了换行符。

用urlencode一下汉字就OK!

不过在客户端需要解码!

 

Thank you for everyone!

PKSEO_dudu的主页 PKSEO_dudu | 初学一级 | 园豆:9
提问于:2013-06-21 10:17
< >
分享
最佳答案
0

终于找到解决办法了!

问题在于:服务器端返回的汉字内容中包含了换行符。

用urlencode一下汉字就OK!

不过在客户端需要解码!

PKSEO_dudu | 初学一级 |园豆:9 | 2013-06-21 15:27
其他回答(7)
0

返回的josn本身就是对象,你试试alert(json.id);

收获园豆:10
jerry-Tom | 园豆:4077 (老鸟四级) | 2013-06-21 10:18

这样不行!直接alert(json);会提示object

这样 alert(json.jobeduinfo[0].id);也是没提示。

关键是这个返回的值是字符串,不是JSON对象!
需要如何转化一下?

支持(0) 反对(0) PKSEO_dudu | 园豆:9 (初学一级) | 2013-06-21 10:20

@PKSEO_dudu: 原来是这样啊,那你在服务端返回的时候进行一下 Object.ToJsonItem()

object是你的结果对象,ToJsonItem 这是我们自己的方法 ,用来把对象转成json,你百度一下,有很多类库,转一下就成。

支持(0) 反对(0) jerry-Tom | 园豆:4077 (老鸟四级) | 2013-06-21 10:30
0

返回的已经是 json对象了。试试   alert(json.jobeduinfo[0].id);

收获园豆:10
Vinton.Liu | 园豆:187 (初学一级) | 2013-06-21 10:34

你这样肯定是没问题的!

关键是通过ajax返回的是个字符串,o(︶︿︶)o 唉

根本就获取不到对象!

支持(0) 反对(0) PKSEO_dudu | 园豆:9 (初学一级) | 2013-06-21 13:17

@PKSEO_dudu: 

将JSON字符串转化为JSON对象

 的方法:http://www.cnblogs.com/sunshinetian/archive/2012/05/19/2509270.html

支持(0) 反对(0) Vinton.Liu | 园豆:187 (初学一级) | 2013-06-21 13:38
0

你说直接alert(json);会提示object

那么这个json就直接是一个json对象了,

设置断点,查看json的结构是什么。

收获园豆:20
Eric.luo | 园豆:853 (小虾三级) | 2013-06-21 11:39

alert 无提示

ajax 触发了error

支持(0) 反对(0) PKSEO_dudu | 园豆:9 (初学一级) | 2013-06-21 13:18

@PKSEO_dudu: 既然提示错误就好办了,

第一步,查看是否是程序错误导致,

第二步,查看是否是json解析错误导致,方法,返回简单的json对象,去掉中文。

支持(0) 反对(0) Eric.luo | 园豆:853 (小虾三级) | 2013-06-21 13:22
0

试试alert(json.d.id)或json=eval(json);alert(json.id);

收获园豆:10
Rich.T | 园豆:3440 (老鸟四级) | 2013-06-21 11:52
0

看看是不是中文乱码设置下, var objJson = eval("(" + unescape(data) + ")");

收获园豆:20
黎明&岁月 | 园豆:159 (初学一级) | 2013-06-21 13:06

谢谢你的热心回答!

不是乱码问题!

支持(0) 反对(0) PKSEO_dudu | 园豆:9 (初学一级) | 2013-06-21 13:18
0

这么麻烦?直接引用一个json2.js,然后调用方法  var result=JSON.parse(json),使用:result.id即可。

收获园豆:20
webaspx | 园豆:1973 (小虾三级) | 2013-06-21 13:11

我看这个方法可行!

支持(0) 反对(0) PKSEO_dudu | 园豆:9 (初学一级) | 2013-06-21 13:16

谢谢热心的圆友!

支持(0) 反对(0) PKSEO_dudu | 园豆:9 (初学一级) | 2013-06-21 13:16

@PKSEO_dudu: 不用客气

支持(0) 反对(0) webaspx | 园豆:1973 (小虾三级) | 2013-06-21 13:21

您好!

我下载了个json2.js 按照你的方法,火狐alert无弹出窗口。

是不是JSON.parse(json) 不是这样的写法?

支持(0) 反对(0) PKSEO_dudu | 园豆:9 (初学一级) | 2013-06-21 13:26

能不能麻烦热心的你帮我解决一下问题
QQ:452957399

万谢!

支持(0) 反对(0) PKSEO_dudu | 园豆:9 (初学一级) | 2013-06-21 13:29

@PKSEO_dudu: 火狐alert无弹出窗口?那IE或者其他的浏览器呢?

不行你可以这样:你在alert语句之前写个 debugger; 然后看看获得的result 是什么样的数据。

支持(0) 反对(0) webaspx | 园豆:1973 (小虾三级) | 2013-06-21 13:31
0

eval('[' + json+ ']')[0];

收获园豆:10
geass.. | 园豆:1821 (小虾三级) | 2013-06-21 15:15

这样不行! o(︶︿︶)o 唉

支持(0) 反对(0) PKSEO_dudu | 园豆:9 (初学一级) | 2013-06-21 15:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册