在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
大多数情况下我们返回到客户端的Json有两种方式: 1、直接传对象给Json()去转成Json
public ActionResult JsonTest() { List<Result> list = new List<Result>(); list.Add(new Result { State = 2}); list.Add(new Result { State = 5 }); return Json(list,JsonRequestBehavior.AllowGet); }
public ActionResult JsonTest()
{ List<Result> list = new List<Result>(); list.Add(new Result { State = 2}); list.Add(new Result { State = 5 }); return Json(list,JsonRequestBehavior.AllowGet); }
public JsonResult JsonTest2()
{ string s=@"[{'State':2},{'State':5}]"; return Json(s, JsonRequestBehavior.AllowGet); }
前端都用同样的方法:
$(function() {
$.ajax({ type: "Get", url: "Home/JsonTest", data: { t: new Date() }, dataType: "json", success: function(data) { alert(data); } }); $.ajax({ type: "Get", url: "Home/JsonTest2", data: { t: new Date() }, dataType: "json", success: function(data) { alert(data); } }); });
这时候得到的结果: JsonTest : [object Object],[object Object] //已经被转成的Json数组 JsonTest2: 第二种情况解决办法到很简单:
alert(eval('(' + data + ')'));
运行字符串就可以得到Json数组. 打开reflector查看到JsonResult :
JavaScriptSerializer serializer = new JavaScriptSerializer();
response.Write(serializer.Serialize(this.Data));
事实上序列化之后都是string,不知道为什么会这样,不解!! 那位高人指点一二!
解决办法: 原因被重复的Serialize,所以不能用Json()去返回,改用Context就Ok了。
public ActionResult JsonTest2() { string s=@"[{""State"":2},{""State"":5}]"; return Content(s); }
|
请发表评论