在 MVC 返回ActionResult中,给我们提供了JSONResult对象,我们可以直接用他来返回JSON对象给前台JS脚本处理
当我们定义好Model后,把我们的Model 传给Json这个方法,它会自动根据我们Model 的属性,遍历属性后生成JSON对象,返回给浏览器,我们不用做任何处理。。
代码类似:
public ActionResult JSON()
{
Models.Person p = new DataValidation.Models.Person();
p.FirstName = "test";
return Json(p, JsonRequestBehavior.AllowGet);
}
前台代码: $().ready(function() {
$("#btnJSON").click(function() {
$.getJSON("/Home/JSON", function(data) {
alert(data.FirstName);
})
})
})
当我们前台 调用 这个Action 的时候,会自动给我们生成好json对象,我们前台js直接使用Model的属性就可以了。。。当我们没有Model 的时候,却要返回JSON对象供前台JS处理怎么办呢?其实也很简单,我们只需要提供 有 键/值对 的对象给Json方法就可以了,它会自动根据键值对生成json对象,我们可以用 Hashtable/Hashmap...,此时返回给前台的就只有一个json对象,里面包含不同属性,我们也可以根据需要返回一组json对象给js使用,当然我们只需再添加一个list来存放这些 键值对 对象就可以了,我们把 list 传递给 Json方法,它会自动生成一个json对象数组给前台后台代码类似: public ActionResult GetJSON()
{
ArrayList list = new ArrayList();
Hashtable ht1 = new Hashtable();
ht1.Add("name", "myName");
Hashtable h2 = new Hashtable();
h2.Add("name","Test名称");
list.Add(ht1);
list.Add(h2);
return Json(list,JsonRequestBehavior.AllowGet);
}
前台代码: $().ready(function() {
$("#btnJSON").click(function() {
$.getJSON("/Home/getJSON", function(data) {
alert(data.length +" " + data[0].name);
})
})
})
大家可以用firebug 跟踪一下,其实 给我们组合成了一个 json对象的数组[{"name":"myName"},{"name":"Test名称"}],JSON对象数组我用$().each(function(json){}),迭代不行,for可以。
文章出处:飞诺网(www.firnow.com):http://dev.firnow.com/course/4_webprogram/asp.net/netjs/20100729/504519.html