如题
客户端的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!
终于找到解决办法了!
问题在于:服务器端返回的汉字内容中包含了换行符。
用urlencode一下汉字就OK!
不过在客户端需要解码!
返回的josn本身就是对象,你试试alert(json.id);
这样不行!直接alert(json);会提示object
这样 alert(json.jobeduinfo[0].id);也是没提示。
关键是这个返回的值是字符串,不是JSON对象!
需要如何转化一下?
@PKSEO_dudu: 原来是这样啊,那你在服务端返回的时候进行一下 Object.ToJsonItem()
object是你的结果对象,ToJsonItem 这是我们自己的方法 ,用来把对象转成json,你百度一下,有很多类库,转一下就成。
返回的已经是 json对象了。试试 alert(json.jobeduinfo[0].id);
你这样肯定是没问题的!
关键是通过ajax返回的是个字符串,o(︶︿︶)o 唉
根本就获取不到对象!
@PKSEO_dudu:
将JSON字符串转化为JSON对象
的方法:http://www.cnblogs.com/sunshinetian/archive/2012/05/19/2509270.html
你说直接alert(json);会提示object
那么这个json就直接是一个json对象了,
设置断点,查看json的结构是什么。
alert 无提示
ajax 触发了error
@PKSEO_dudu: 既然提示错误就好办了,
第一步,查看是否是程序错误导致,
第二步,查看是否是json解析错误导致,方法,返回简单的json对象,去掉中文。
试试alert(json.d.id)或json=eval(json);alert(json.id);
看看是不是中文乱码设置下, var objJson = eval("(" + unescape(data) + ")");
谢谢你的热心回答!
不是乱码问题!
这么麻烦?直接引用一个json2.js,然后调用方法 var result=JSON.parse(json),使用:result.id即可。
我看这个方法可行!
谢谢热心的圆友!
@PKSEO_dudu: 不用客气
您好!
我下载了个json2.js 按照你的方法,火狐alert无弹出窗口。
是不是JSON.parse(json) 不是这样的写法?
能不能麻烦热心的你帮我解决一下问题
QQ:452957399
万谢!
@PKSEO_dudu: 火狐alert无弹出窗口?那IE或者其他的浏览器呢?
不行你可以这样:你在alert语句之前写个 debugger; 然后看看获得的result 是什么样的数据。
eval('[' + json+ ']')[0];
这样不行! o(︶︿︶)o 唉