JSON入门指南--服务端处理JSON

平时公司使用的ASP.NET MVC3来开发Web项目,其实在ASP.NET中已经原生的支持JSON。所以基本不需要引进Newtonsoft.Json.dll。下面看在MVC4中,后台生成JSON数据,前端使用Ajax调用。然后就是前端使用POST请求,发送JSON格式,后台程序来处理。

1.后台生成JSON格式数据,前端使用Ajax调用

后台代码:

public JsonResult GetList()
        {
            ArrayList eventlist = new ArrayList();
            for (int i = 0; i < 3; i++)
            {
                Hashtable ht = new Hashtable();
                ht.Add("eventid", i + 1);
                ht.Add("eventname", "测试活动");
                ht.Add("eventdata", "2014-04-02");
                ht.Add("eventlocation", "公司");
                eventlist.Add(ht);
            }
            return Json(new { list = eventlist, count = eventlist.Count }, JsonRequestBehavior.AllowGet);
        }

前端调用代码:

$.ajax({
            url: "/Home/GetList",
            success: function (data) {
                var eventlist =data.list;
                for(var index in eventlist){
                    console.log(eventlist[index].eventname);
                }
                console.log(data.count);
            }
        });

<!-- .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } -->

2.前端使用POST请求,发送JSON格式数据给后台

页面放置一个button,代码片段为:<input type="button" id="btn_send" value="Send" />

$("#btn_send").click(function () {
            var person1 = new Object();
            person1.Name = "Superman";
            person1.Age = 20;

            var person2 = new Object();
            person2.Name = "BBB";
            person2.Age = 22;

            var arr = [];
            arr.push(person1);
            arr.push(person2);

            $.ajax({
                url: '/Home/AddUser',
                type: "POST",
                data: JSON.stringify(arr),
                success: function (data) {
                    console.log(data);
                }
            });
        });

后台代码:

[HttpPost]
        public JsonResult AddUser()
        {
            string json = string.Empty;
            using(var reader=new StreamReader(HttpContext.Request.InputStream))
            {
                json = reader.ReadToEnd();
            }
            bool result = false;
            string message = string.Empty;

            var personlist = new JavaScriptSerializer().Deserialize<List<Person>>(json);
            foreach(Person p in personlist){
                result = true;
                message += p.Name + ":" + p.Age;
            }
            return Json(new { result=result,message=message});
        }
        public class Person
        {
            public string Name { get; set; }
            public int Age { get; set; }
        }

很多人会问我,使用了MVC3,为什么不在前端使用Model,然后绑定数据,这样后台处理方便,而已编辑的时候,前端基本不要做什么事情。其实这样考虑是为了把前端和后台完全分离出来,前端使用AngularJS做数据的绑定。前端和后台数据的传输格式就使用JSON。后面我们会研究ASP.NET Web API如何做到前端和后台完全分离的。

 参考网址: http://www.dotblogs.com.tw/kevintan1983/archive/2012/12/26/86013.aspx

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏听雨堂

页面状态保持机制(编辑中)

Web应用程序中,有很多状态需要在页面的反复回调中能够保持住,还有一些状态需要在页面之间保持。对于状态的保持,是一个值得研究的问题。状态处理不当是页面失效或错误...

2835
来自专栏Create Sun

quartz.net任务调度:源码及使用文档

前言   前段时间把自己封装quartz.net 类库的过程总结到博客园,有网友想要看一下源码,所以就把源码传到github上去了,今天把地址分享给大家,程序中...

3919
来自专栏hbbliyong

WCF浅尝

1.首先先建立一个WCF服务应用程序 ? 2.再建立一个宿主程序,这里用控制台,添加服务引用,这里会报错: ? 点击页面确定,回到添加服务页面 ? 点击箭头有如...

36110
来自专栏.NET技术

.net core实践系列之SSO-同域实现

SSO的系列还是以.Net Core作为实践例子与大家分享,SSO在Web方面复杂度分同域与跨域。本篇先分享同域的设计与实现,跨域将在下篇与大家分享。

4442
来自专栏帘卷西风的专栏

linux安装valgrind

转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog)

1811
来自专栏张善友的专栏

QQ互联OAuth2.0 .NET SDK 发布以及网站QQ登陆示例代码

OAuth: OAuth(开放授权)是一个开放标准,允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站或分享他...

3007
来自专栏程序员的SOD蜜

使用微服务架构思想,设计部署OAuth2.0授权认证框架

3.5K3
来自专栏老付的网络博客

js如何操作本地程序

假设有这样一个产品,一个web和一个winform客户端,在客户在web的网页上面点击启动客户端来处理,这个时候开始调用本地的客户端,来完成指定的工作。这种场景...

2082
来自专栏雪胖纸的玩蛇日常

python3+django2 开发易语言网络验证(中)

4047
来自专栏码农阿宇

.Net Core从命令行读取配置文件

最近在学习博客园腾飞(jesse)的.Net Core视频教程,收益匪浅,在此作推荐 : http://video.jessetalk.cn/ 言归正传,.Ne...

3084

扫码关注云+社区

领取腾讯云代金券