jQuery asp.net 用json格式返回自定义对象

  客户端用一个html页面调用一个ashx文件(一般http处理程序),返回 json格式的自定义对象:

  html:

  

复制代码 代码如下:

  <!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>ajax测试</title>

  <script src="js/jquery-1.2.3.js" type="text/javascript"></script><!-这里引用了jQuery框架->

  </head>

  <body>

  <script type="text/javascript">

  $(document).ready(function(){

  $("#Button2").click(function(){

  var url="handler.ashx?&name="+$("#Text1").val()+"&age="+$("#Text2").val();

  $.get(url,function(result){

  var obj=eval("("+result+")");

  alert("姓名:"+obj.Name+"\n"+"年龄:"+obj.Age);

  })

  })

  })

  </script>

  <input id="Button2" type="button" value="button" /><span lang="zh-cn">姓名:</span><input id="Text1"

  type="text" /><span lang="zh-cn">年龄:</span>

  <input id="Text2"

  type="text" />

  </body>

  </html>

  handler.ashx文件:

  

复制代码 代码如下:

  <%@ WebHandler Language="C#" Class="Handler" %>

  using System;

  using System.Web;

  using System.Runtime.Serialization.Json;

  using System.Collections;

  using System.Runtime.Serialization;

  public class Handler : IHttpHandler {

  public void ProcessRequest(HttpContext context)

  {

  context.Response.ContentType = "text/plain";

  string name = context.Request.Params["name"].ToString();

  string age = context.Request.Params["age"].ToString();

  person p1 = new person(name,age);

  DataContractJsonSerializer djson = new DataContractJsonSerializer(p1.GetType());//将对象序列化为 JavaScript 对象表示法 (JSON)

  djson.WriteObject(context.Response.OutputStream, p1);

  }

  public bool IsReusable {

  get {

  return false;

  }

  }

  [DataContract]//要序列化,一定要加这个属性

  public class person

  {

  [DataMember]//属性“DataMember”只在“property, indexer, field”声明中有效。

  public string Name="无名士";

  [DataMember]

  public string Age="0";

  public override string ToString()

  {

  return "姓名:" + Name + "年龄:" + Age;

  }

  public person(string name,string age)//自定义类person

  {

  this.Name = name;

  this.Age = age;

  }

  public person()

  { }

  }

  }