(一)前台
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script src="../Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
$.post("/06Json/HandlerJson.ashx", function (data, status) {
//第一种情况:拿到类对象
// var person = $.parseJSON(data);//拿到后台传过来的数组对象
//alert(person.Name);
// $("#myName").val(person.Name);
// $("#myAge").val(person.Age);
//第二种情况:拿到字符串数组
//var strs = $.parseJSON(data); //拿到后台传过来的数组对象
//alert(strs[0]);
//alert(strs[1]);
var pers = $.parseJSON(data); //拿到后台传过来的数组对象
alert(pers[0].Name); //打印出类数组元素的Name属性
alert(pers[0].Age); //打印出类数组元素的Age属性
alert(pers[1].Name); //打印出类数组元素的Name属性
alert(pers[1].Age); //打印出类数组元素的Age属性
});
});
</script>
</head>
<body>
我的名字:<input type="text" id="myName" />
我的年龄:<input type="text" id="myAge" />
</body>
</html>
(二)后台
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Script.Serialization;
namespace _13ajax._06Json
{
/// <summary>
/// HandlerJson 的摘要说明
/// </summary>
public class HandlerJson : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
//context.Response.Write("Hello World");
JavaScriptSerializer jss = new JavaScriptSerializer();
//第一种情况传递的是一个类对象,可以在前台拿到后台传送过来的类对象字符串
/*
string json = jss.Serialize(new person() { Name="张三", Age=12 });
context.Response.Write(json);//打印出得到的json对象
*/
//第二种情况传递的是一个数组,可以在前台根据下标拿到后台传送过来的数组对象的元素
/*
string[] strs = {"tom","jim","kait" };
string json1 = jss.Serialize(strs);//把数组对象实例化
context.Response.Write(json1);//打印出数组对象
*/
//第三种情况传递类对象数组
person[] pers = new person[] {new person(){ Name="老大", Age=29},new person(){ Name="老二", Age=28} };//得到一个类对象数组,并为数组对象实例化
string json2 = jss.Serialize(pers);//把类数组对象实例化
context.Response.Write(json2);//打印出类数组对象
}
public bool IsReusable
{
get
{
return false;
}
}
}
public class person//声明一个Person类
{
public string Name{get;set;} //设置name字段
public int Age { get; set; } //设置age字段
}
}