Jquery中getJSON在asp.net中的使用说明

  准备工作

  ·Customer类

  

复制代码 代码如下:

  public class Customer

  {

  public int Unid { get; set; }

  public string CustomerName { get; set; }

  public string Memo { get; set; }

  public string Other { get; set; }

  }

  (一)ashx

  

复制代码 代码如下:

  Customer customer = new Customer

  { Unid=1,CustomerName="宋江",Memo="天魁星",Other="黑三郎"};

  string strJson = Newtonsoft.Json.JsonConvert.SerializeObject(customer);

  context.Response.Write(strJson);

  

复制代码 代码如下:

  function GetCustomer_Ashx() {

  $.getJSON(

  "webdata/Json_1.ashx",

  function(data) {

  var tt = "";

  $.each(data, function(k, v) {

  tt += k + ":" + v + "<br/>";

  })

  $("#divmessage").html(tt);

  });

  }

  ·通过getJSON向ashx请求数据。返回的数据为JSON对象。

  (二)ashx文件,但返回的是实体集合

  

复制代码 代码如下:

  Customer customer = new Customer

  { Unid=1,CustomerName="宋江",Memo="天魁星",Other="黑三郎"};

  Customer customer2 = new Customer

  { Unid = 2, CustomerName = "吴用", Memo = "天机星", Other = "智多星" };

  List<Customer> _list = new List<Customer>();

  _list.Add(customer);

  _list.Add(customer2);

  string strJson = Newtonsoft.Json.JsonConvert.SerializeObject(_list);

  context.Response.Write(strJson);

  

复制代码 代码如下:

  function GetCustomerList() {

  $.getJSON(

  "webdata/Json_1.ashx",

  function(data) {

  var tt = "";

  $.each(data, function(k, v) {

  $.each(v,function(kk, vv) {

  tt += kk + ":" + vv + "<br/>";

  });

  });

  $("#divmessage").html(tt);

  });

  }

  (三)请求aspx文件

  ·cs文件

  

复制代码 代码如下:

  protected void Page_Load(object sender, EventArgs e)

  {

  Customer customer = new Customer

  { Unid = 1, CustomerName = "宋江", Memo = "天魁星", Other = "黑三郎" };

  string strJson = Newtonsoft.Json.JsonConvert.SerializeObject(customer);

  Response.Write(strJson);

  }

  ·Aspx文件

  <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Json_1.aspx.cs"

  Inherits="webdata_Json_1" %>

  前台文件只保留Page声明,其它全部删除。

  ·js文件

  

复制代码 代码如下:

  function GetCustomer_Aspx() {

  $.getJSON(

  "webdata/Json_1.aspx",

  function(data) {

  var tt = "";

  $.each(data, function(k, v) {

  tt += k + ":" + v + "<br/>";

  })

  $("#divmessage").html(tt);

  });

  }

  这个部分与请求ashx文件时相同。

  请求实体集合时,与ashx时相同,这里不做重复。

  (四)请求文本文件

  文本文件提供json字符串,由$.getJSON得到json对象。

  ·文本文件

  {Unid:1,CustomerName:"宋江",Memo:"天魁星",Other:"黑三郎"}

  文本文件提供json串,对于json的组成格式,请参见其它文档。对于这一实体json,会被忽略空行与空格。

  

复制代码 代码如下:

  function GetCustomer_txt() {

  $.getJSON(

  "webdata/Json_1.txt",

  function(data) {

  var tt = "";

  $.each(data, function(k, v) {

  tt += k + ":" + v + "<br/>";

  })

  $("#divmessage").html(tt);

  });

  }

  解析的方法与其它的相同。

  对于多行的如下:

  文本:

  

复制代码 代码如下:

  [

  {Unid:1,CustomerName:"宋江",Memo:"天魁星",Other:"黑三郎"},

  {Unid:2,CustomerName:"吴用",Memo:"天机星",Other:"智多星"}

  ]

  解析:

  

复制代码 代码如下:

  function GetCustomer_TxtList() {

  $.getJSON(

  "webdata/Json_1.txt",

  function(data) {

  var tt = "";

  $.each(data, function(k, v) {

  $.each(v, function(kk, vv) {

  tt += kk + ":" + vv + "<br/>";

  });

  });

  $("#divmessage").html(tt);

  });

  }

  与其它的相同。

  (五)带参数ajax请求

  以ashx为例子,按客户id来请求客户。

  ·Ashx文件

  

复制代码 代码如下:

  if(context.Request["iUnid"]==null)

  return;

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

  Customer customer = new Customer

  { Unid = 1, CustomerName = "宋江", Memo = "天魁星", Other = "黑三郎" };

  Customer customer2 = new Customer

  { Unid = 2, CustomerName = "吴用", Memo = "天机星", Other = "智多星" };

  List<Customer> _list = new List<Customer>();

  _list.Add(customer);

  _list.Add(customer2);

  int iCustomerId =Convert.ToInt32(context.Request["iUnid"]);

  var cus = from q in _list

  where q.Unid == iCustomerId

  select q;

  string strJson = Newtonsoft.Json.JsonConvert.SerializeObject(cus);

  context.Response.Write(strJson);

  ·ajax请求

  

复制代码 代码如下:

  function GetCustomer_AshxWithPara() {

  $.getJSON(

  "webdata/Json_2.ashx",

  { iUnid: 1 },

  function(data) {

  var tt = "";

  $.each(data, function(k, v) {

  $.each(v, function(kk, vv) {

  tt += kk + ":" + vv + "<br/>";

  });

  });

  $("#divmessage").html(tt);

  });

  }

  其中参数也是以k/v对格式发出。请求返回的可以看到:在服务端以Customer列表集合返回。

  在jquery库中,getJSON其实是调用的:Query.get(url, data, callback, "json")

  这点很重要。