public ActionResult GetValue(string id)
{
var query = from a in db.SysMenu
select new {
a.ID,
a.ParentId,
a.Title,
a.Url,
a.Icon,
a.Sort,
a.CreateDate
};
if (string.IsNullOrEmpty(id))
{
int iid = Convert.ToInt32(id);
query = query.Where(a => a.ID == iid);
}
return Json(query, JsonRequestBehavior.AllowGet);
}
你把eval的功能弄混了。
eval是执行语句的功能,把一条以字符串形式表示的语句转换并执行。
json返回的是一个数据对象格式的字符串,这个字符串是不能简单通过eval处理的。
你应该使用json的转换字符串转object函数。
具体需要怎么转呢大哥
@孤独狂少: 如果有jQuery,则使用jQuery.JSON.Parse,如果没有,就引用或者单独使用JSON的js代码。
别去使用eval来转换,虽然也可以:
var json = '{a:5}';
var expression = "o=" + json;
eval(expression);
alert(o.a)//此处应该弹出5
@孤独狂少:
给个更复合json格式字符串的例子:
<html> <head> <script> var json = "{'a':5,'b':[3,5,{'d':8}]}"; var expression = "o=" + json; alert(expression); try { eval(expression); alert(o.a);
alert(o.b.length);
alert(o.b[2].d);} catch(e) { alert(e.message); } </script> </head> <body> </body> </html>
@519740105: 谢谢!
你把接收到的json串贴出来
接受的全是object但是医用eval转就什么反应都没有了
@孤独狂少:
那要么不使用eval,要么:
eval('result='+YourJsonStr);
然后使用result
@螺 丝 钉: 我已经弄出来了,没有用到eval虽然没有得到更好的答案,但是还是谢谢啦!
你应该贴前台代码,这样的数据过去,直接就是json数据了。
//tree树节点编辑
function penail() {
var t = $('#treeMenu');
var node = t.tree('getSelected');
if (node) {
$.get("/System/GetValue", { id: node.id }, function (data) {
//弹出编辑对话框
$("#pencailDlg").dialog('open');
//情况form表单的值
$("#pencailForm").form('clear');
//eval()将json字符串解析成json对象
var data = eval( '('+ data + ')');
console.info(data);
alert(data);
if (data) {
if (data.parentId != '0')
$("#itxtPtitle").val();
$("#itxtTitle").val(data.Title);
$("#itxtUrl").val(data.Url);
$("#itxtIcons").val(data.Icon);
$("#itxtSort").numberbox('setValue',data.Sort);
}
});
}
}
@孤独狂少: 你可以直接把data输出来,不需要eval。
@幻天芒: 不要eval是可以输出来的,输出object,但是有了这个就不知道是怎么回事
@孤独狂少: 因为你那种写法,直接到前台就已经是json对象了。
@幻天芒: 可是不知道为什么就是获取不了对象里面的值
@孤独狂少: 不至于吧,你用Chrome的控制台看看,难道也没有值么?
你如果要解析直接用JSON.Parse就OK了 一般不用Eavl做解析 只是做 函数 的处理
还是查看下http请求响应的是什么 结果吧 一般都会 包含在 {d[]} d 这个里面 解析时 需要 eval('('+data.d+')');
虽然没有得到答案,但是我已经弄出来了,也谢谢大家了啊!
不用eval.
建议你先使用浏览器查看一下源码解析情况;其次,我们在一般将json格式的数据传到页面之前,先要转换为Object对象,然后把该对象返回到页面,在使用脚本代码进行显示……
谢谢啦!