1.Json(JavaScript Object Notation) ,是轻量级的文本数据交换格式。JSON 比 XML 更小、更快,更易解析。在Ajax,传递数据时长用到。 JSON 语法是 JavaScript 语法的子集,可用eval()可将Json对象转换为Javascript对象,这样就可以用Javascript来处理json了
2. Json.Net :一个比较不错.net json框架。它可用灵活的支持.net对象的序列化和反序列化,可用支持Linq操作Json,支持Json与xml的转换,支持net2.0以上版本,它序列化与反序列化比Net自带处理Json类效率要高。
可以在NuGet(库类程序包管理器)--->库类程序包管理器控制器——>输入“PM> Install-Package Newtonsoft.Json” VS 会自动下载最新的Json.Net插件。
3.Jquery 文件
<script type="text/javascript"> $(function () { $("#sand").click(function () { $.ajax({ type: "GET",//发送格式 url: "JsonAjax.ashx", //发送地址 //发送参数,encodeURL()给参数编码,因为参数是中文可能出现乱码情况 data: { name: encodeURI($("#author").val()), content: encodeURI($("#content").val()) }, //返回数据格式 datatype: "json", //Ajax执行成功后函数 success: function (obj) { //Eval()方法把Json对象转换成Javascript对象,这个Javascript才能正确处理Json数据 var data = eval(obj) $("#Msg").empty(); //循环数据 $(data).each(function () { //插入对象到DIV中 $("#Msg").append("User:" + this['user'] + "<br/>"); $("#Msg").append("Msg:" + this['text'] + "<br/>"); $("#Msg").append("Date:" + this['time'] + "<br/>"); }); }, error: function () { alert("error"); } }); }); }); </script>
4. ashx文件
using System; using System.Collections.Generic; using System.Linq; using System.Web; using Newtonsoft.Json;//Json.Net类库 namespace WeAppJqueryChart { /// <summary> /// JsonAjax1 的摘要说明 /// </summary> public class JsonAjax1 : IHttpHandler { public void ProcessRequest(HttpContext context) { //用System.Web.HttpUtility.UrlDecode()方法解码接收的参数 //Ajax data传的参数必须用context.request["xxx"]方式接收参数 string name = System.Web.HttpUtility.UrlDecode(context.Request["name"]); string content = System.Web.HttpUtility.UrlDecode(context.Request["content"]); IISHandler ajax = new IISHandler(); List<IISHandler.Message> messageList = new List<IISHandler.Message>(); //接收数据保存数据 if (!string.IsNullOrEmpty(name) && !string.IsNullOrEmpty(content)) { IISHandler.Message message = new IISHandler.Message() { id = Guid.NewGuid().ToString(), user = name, text = content, time = DateTime.Now.ToString() }; messageList.Add(message); ajax.Save(messageList); } //返回要查询的数据 List<IISHandler.Message> ShowList = ajax.GetMessages(10); //用Json.Net类库List<IISHandler.Message>的Json序列化 string Json = JsonConvert.SerializeObject(ShowList, Formatting.Indented); //返回Json数据 context.Response.Write(Json); } public bool IsReusable { get { return false; } } } }
5.web.config 配置.ashx文件
<system.web> <httpHandlers> <!--<add verb="路径名称(表示只有请求路径为“JsonAjax.ashx"才执行Type文件) path=(请求类型Post,Get) type=(文件唯一标识(命名空间+.ashx文件名))"/>--> <add verb="JsonAjax.ashx" path="*" type="WeAppJqueryChart.JsonAjax" validate="true"/> </httpHandlers> </system.web>