读书人

asp.net利用JQuery获取JSON没法转换

发布时间: 2013-07-09 09:50:48 作者: rapoo

asp.net利用JQuery获取JSON,无法转换为对象
客户端的JS是这样写的:
$.getJSON("/tools/submit_ajax.ashx?action=user_job_education_edit&id=" + id, function (json) {
alert(json.jobeduinfo[0].id);
});

服务器端代码:

string JsonDt = Common.DatatableToJson.DataTableToJson("jobeduinfo", dt);
context.Response.Write(JsonDt);
return;

通过火狐的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 都试过了! jQuery ASP.NET JSON
[解决办法]
去网上下载一个Newtonsoft.Json.dll
[解决办法]


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

[解决办法]
string JsonDt = Common.DatatableToJson.DataTableToJson("jobeduinfo", dt);
context.Response.Write(JsonDt);
return;

加一句
string JsonDt = Common.DatatableToJson.DataTableToJson("jobeduinfo", dt);
context.Response.ContentType = "application/json";
context.Response.Write(JsonDt);
return;

[解决办法]
使用getJSON的话要标准的Json格式哦。我记得要加\


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

就像5楼说的吧!
[解决办法]


firebug看到不是JSON格式!

$.ajax({
type: 'post',
dataType: 'json',
contentType: "application/json; charset=utf-8",
url: "/tools/submit_ajax.ashx?action=user_job_education_edit&id=" + id,
success: function (data) {
var jsonobjs = eval("(" + data + ")");
alert(jsonobjs.jobeduinfo[0].userid);
},
error: function (data) {
alert("error" + data);
}
});
提示error[object Object]!

说明你返回的不是json格式的数据,所以会失败
[解决办法]
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

string JsonDt = Common.DatatableToJson.DataTableToJson("jobeduinfo", dt);
context.Response.Write(JsonDt);
return;

加一句
string JsonDt = Common.DatatableToJson.DataTableToJson("jobeduinfo", dt); 


context.Response.ContentType = "application/json";
context.Response.Write(JsonDt);
return;



asp.net利用JQuery获取JSON,没法转换为对象
firebug看到不是JSON格式!

$.ajax({
type: 'post',
dataType: 'json',
contentType: "application/json; charset=utf-8",
url: "/tools/submit_ajax.ashx?action=user_job_education_edit&id=" + id,
success: function (data) {
var jsonobjs = eval("(" + data + ")");
alert(jsonobjs.jobeduinfo[0].userid);
},
error: function (data) {
alert("error" + data);
}
});
提示error[object Object]!

说明你返回的不是json格式的数据,所以会失败


如何解决这个问题?
服务器端我加了:context.Response.ContentType = "application/json";
asp.net利用JQuery获取JSON,没法转换为对象
还是不返回JSON对象!

你调试一下 看你最后串的结果是什么,就是一般处理程序中的 JsonDt 然后贴上来分析一下

读书人网 >asp.net

热点推荐