后台C# List<Model> 转化为json字符串传给前台,前台将此字符串转化为对象
我用的是C#extjs,后台获取了一个list<model>,model其实就是普通的表字段,也就是三层中的model。后台将list<>转化为json字符串的代码是va...
我用的是C# extjs,后台获取了一个list<model> ,model其实就是普通的表字段,也就是三层中的model。
后台将list<>转化为json字符串的代码是
var jser = new JavaScriptSerializer(); var json = jser.Serialize(listModel); string sRespons = json.ToString(); return sRespons;
以下是 json字符串sRespons的图片
然后前台获取到了该json字符串,没有啥变化和bug,
前台代码是
function GetRight() { Ext.Ajax.request({ url: 'Main.aspx', method: 'POST', params: { type: 'Getright' }, async: false, success: function (response) { var trn = response; var object = eval(‘('+json+')'); var str = ""; for (var i = 0; i < 19; i++) { str += "ID:" + object[i].ID + " " + "命名空间:" + object[i].F_MENU_SPACENAME; } alert(str); }, failure: function (response, options) { Ext.MessageBox.alert('获取菜单失败', response.status); } }); }
问题来了, var object = eval(‘('+json+')'); 报错,extjs报错是 “缺少[”,缺少中括号,我明明有的。
另外将该代码改为var object = eval(json);这句就过去了,但是到了for循环时候,我跟进了,object[i]是undefined,而且直接运行过去,说ID不是对象或者为null。这到底什么情况。。
是后台代传上来的不是json字符串吗,还是前台写错了?高分奉上 展开
后台将list<>转化为json字符串的代码是
var jser = new JavaScriptSerializer(); var json = jser.Serialize(listModel); string sRespons = json.ToString(); return sRespons;
以下是 json字符串sRespons的图片
然后前台获取到了该json字符串,没有啥变化和bug,
前台代码是
function GetRight() { Ext.Ajax.request({ url: 'Main.aspx', method: 'POST', params: { type: 'Getright' }, async: false, success: function (response) { var trn = response; var object = eval(‘('+json+')'); var str = ""; for (var i = 0; i < 19; i++) { str += "ID:" + object[i].ID + " " + "命名空间:" + object[i].F_MENU_SPACENAME; } alert(str); }, failure: function (response, options) { Ext.MessageBox.alert('获取菜单失败', response.status); } }); }
问题来了, var object = eval(‘('+json+')'); 报错,extjs报错是 “缺少[”,缺少中括号,我明明有的。
另外将该代码改为var object = eval(json);这句就过去了,但是到了for循环时候,我跟进了,object[i]是undefined,而且直接运行过去,说ID不是对象或者为null。这到底什么情况。。
是后台代传上来的不是json字符串吗,还是前台写错了?高分奉上 展开
1个回答
展开全部
确认你的json串中,没有换行符,或是其它特殊字符吧,可以把json帖上来。
另外,看你的前台。
success: function (response) {
var trn = response;
var object = eval(‘('+json+')');
var str = "";
这里并没有看到json怎么来的。
另外,看你的前台。
success: function (response) {
var trn = response;
var object = eval(‘('+json+')');
var str = "";
这里并没有看到json怎么来的。
追问
哦 是我 粘错了,json就是response。
是我自己搞错了,json改成trn.responseText就可以了。呵呵 是我自己搞错了,分给你了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询