/*
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 ;}
}
}
|