/* AJAX传递复杂数据结构如果按自己进行格式定义的话会经历组装,解析的过程,比较麻烦,其实AJAX中有一个数据的传输标准Json. Json 将服务器端将复杂对象序列化为一个Json字符串,在浏览器端再用$.parseJson()反序列化为Javascript可以读取的对象。 C# 中将.NET对象序列化为Json字符串的方法:JavaScriptSerializer().Serialize(),AJAX得到的data是Json格式的数据,用$.parseJson()将Json格式的数据解析成javascript对象。 首先在客户端,JsonTest1.html 通过AJAX发出请求,然后服务端返回数据,数据存在data中,如下所示: */ <head> <title>无标题页</title> <script src= "http://www.cnblogs.com/JQuery/js/jquery-1.4.2.js" type= "text/javascript" ></script> <script type= "text/javascript" > $(function(){ $.post( "JsonTest1.ashx" ,function(data,status){ // 反序列化一个对象 // var person = $.parseJSON(data); // alert(person.Name); // alert(data); // 反序列化一个数组 var str = $.parseJSON(data); alert(str[1]); }) }) </script> </head> //下面是服务端 JsonTest1.ashx 的代码,服务端将复杂数据类型(对象,数组)发回给客户端 public class JsonTest1 : IHttpHandler { public void ProcessRequest (HttpContext context) { context.Response.ContentType = "text/plain" ; JavaScriptSerializer jss = new JavaScriptSerializer(); //传一个对象过去 //String json = jss.Serialize(new Person() { Name="yaoguipeng",Age=30}); //context.Response.Write(json); //传一个数组过去 string [] str = { "yaoguipeng" , "guipengyao" , "yaopeng" }; string json = jss.Serialize(str); context.Response.Write(json); } public bool IsReusable { get { return false ; } } public class Person { public string Name{ get ; set ;} public int Age{ get ; set ;} } } |