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