您的位置:首页 > Web前端 > JQuery

ASP.NET利用JQuery中的Aajax实现JSON数据后台交互

2011-03-30 17:16 1241 查看
JSON简单介绍:

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.

  简单 JSON 示例

  按照最简单的形式,可以用下面这样的 JSON 表示名称 / 值对:

  { "firstName": "Brett" }

本人使用的是Newtonsoft.Json类库。

   后台代码:

public static class JsonHelper<T, K>
{
/// <summary>
/// 序列化
/// </summary>
/// <param name="t"></param>
/// <returns></returns>
public static string JsonWriter(T t)
{
return JsonConvert.SerializeObject(t,new IsoDateTimeConverter());
}
/// <summary>
/// 反序列化
/// </summary>
/// <param name="serialize"></param>
/// <returns></returns>
public static T JsonReader(string serialize)
{
return JsonConvert.DeserializeObject<T>(serialize);
}
/// <summary>
/// 将DataTable转化成JSON格式
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static string JsonDataTable(DataTable dt)
{
StringBuilder jsonBuilder = new StringBuilder();
jsonBuilder.Append("{\"");
jsonBuilder.Append(dt.TableName.ToString());
jsonBuilder.Append("\":[");
for (int i = 0; i < dt.Rows.Count; i++)
{
jsonBuilder.Append("{");
for (int j = 0; j < dt.Columns.Count; j++)
{
jsonBuilder.Append("\"");
jsonBuilder.Append(dt.Columns[j].ColumnName);
jsonBuilder.Append("\":\"");
jsonBuilder.Append(dt.Rows[i][j].ToString());
jsonBuilder.Append("\",");
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
jsonBuilder.Append("},");
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
jsonBuilder.Append("]");
jsonBuilder.Append("}");
return jsonBuilder.ToString();
}
}

一般应用程序:

public void ProcessRequest(HttpContext context)
{
string index= context.Request.QueryString["p"].ToString();
if (null != index)
{
context.Response.Write(List(int.Parse(index)));
context.Response.ContentType = "json/json";//设置写出的是JSON格式文件

}
}
public bool IsReusable
{
get
{
return false;
}
}
private string List(int id)
{
C_USER user = new C_USERService().GetById(id);
string json =JsonHelper<C_USER, int>.JsonWriter(user);
return json;
}

页面调用:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="index.aspx.cs" Inherits="index" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>

<head runat="server">
<title>Json测试</title>

<script language="javascript" type="text/javascript" src="script/jquery-1.4.2.min.js"></script>

<script language="javascript" type="text/javascript">
$(document).ready(function(){
$.ajax({
url:"Handler.ashx?p=1",
//dataType:"json",
type:"post",
success:function(json)
{
alert(json.NAME); //NAME是实体类中的一个属性
}
});
});
</script>

</head>
<body>
<form id="form1">
</form>
</body>
</html>

结束:

问题的一些总结:

1、用Newtonsoft.Json类库3.5的版本的时候运行出异常System.Runtime..........的异常,问题是安装的Framework3.5版本是sp1.0的不存在那个方法,建议升级下或者用Newtonsoft.Json类库2.0版本

2、当json文件写出后一直没发用,解决方法:在一般应用程序里+ context.Response.ContentType = "json/json";//设置写出的是JSON格式文件或者在Ajax那里+ dataType:"json",写出的是json格式。

3、如果用get请求会出现URL缓存(点击第一次的时候可以第二次就不管用)解决方案:1、改用post请求或者设置一个参数(参数采用系统时间的秒)如:

var date =new Date();

var nocache=date.getSeconds();

Ajax中使用范例: url:"Handler.ashx?p=1&nocache="+nocache,

文章如果有不明之处可以留言,谢谢。

完。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐