阐述返回JSON数据的使用说明介绍
2010-01-24 01:08
495 查看
第一步:为了使服务器端查询返回JSON数据,从网上找了个用C#写的JSONHelper类(在此感谢那位不知名的好人),以下是JsonHelper类全部代码。(JsonHelper.cs)
第二步:新建ASPX文件,做为服务器端,用返回查询的JSON数据(PagingRequest.cs)
第三步:返回JSON数据页面用作客户端呈现结果的载体(PagingControls.aspx)
第四部:写JS脚本!使用返回JSON数据
using System; using System.Collections; using System.Collections.Generic; using System.Text; using System.Web.Script.Serialization; /// <summary> /// JSONHelper 的摘要说明 /// </summary> public class JSONHelper { //对应JSON的singleInfo成员 public string singleInfo = string.Empty; protected string _error = string.Empty; protected bool _success = true; protected long _totalCount = 0; protected System.Collections.ArrayList arrData = new ArrayList(); protected System.Collections.ArrayList arrDataItem = new ArrayList(); public JSONHelper() { } public static string ToJSON(object obj) { JavaScriptSerializer serializer = new JavaScriptSerializer(); return serializer.Serialize(obj); } public static string ToJSON(object obj, int recursionDepth) { JavaScriptSerializer serializer = new JavaScriptSerializer(); serializer.RecursionLimit = recursionDepth; return serializer.Serialize(obj); } //对应于JSON的success成员 public bool success { get { return _success; } set { //如设置为true则清空error if (success) _error = string.Empty; _success = value; } } //对应于JSON的error成员 public string error { get { return _error; } set { //如设置error,则自动设置success为false if (value != "") _success = false; _error = value; } } public long totlalCount { get { return _totalCount; } set { _totalCount = value; } } //重置,每次新生成一个json对象时必须执行该方法 public void Reset() { _success = true; _error = string.Empty; singleInfo = string.Empty; arrData.Clear(); arrDataItem.Clear(); } public void AddItem(string name, string value) { arrData.Add("/"" + name + "/":" + "/"" + value + "/""); } public void ItemOk() { arrData.Add("<BR>"); } //序列化JSON对象,得到返回的JSON代码 public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("{"); sb.Append("totalCount:" + totlalCount.ToString() + ","); sb.Append("success:" + _success.ToString().ToLower() + ","); sb.Append("error:/"" + _error.Replace("/"", "///"") + "/","); sb.Append("singleInfo:/"" + singleInfo.Replace("/"", "///"") + "/","); sb.Append("data:["); int index = 0; sb.Append("{"); if (arrData.Count <= 0) { sb.Append("}]"); } else { foreach (string val in arrData) { index++; if (val != "<BR>") { sb.Append(val + ","); } else { sbsb = sb.Replace(",", "", sb.Length - 1, 1); sb.Append("},"); if (index < arrData.Count) { sb.Append("{"); } } } sbsb = sb.Replace(",", "", sb.Length - 1, 1); sb.Append("]"); } sb.Append("}"); return sb.ToString(); } }
第二步:新建ASPX文件,做为服务器端,用返回查询的JSON数据(PagingRequest.cs)
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; using System.Data.SqlClient; using System.Text; namespace ExtJSDemo.Data { public partial class PagingRequest : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { int start = Convert.ToInt32(Request["start"].ToString()); // ExtJS Paging 必须指定的参数(从第几行记录开始)/ ExtJS默认0是第一行记录 int limit = Convert.ToInt32(Request["limit"].ToString()); // ExtJS Paging 必须指定的参数(每页显示多少行记录) JSONHelper jsonHelp = new JSONHelper(); int TotalRecords = 0; DataSet DSet = GET_Product_Data(start, limit, out TotalRecords); // 获取数据 jsonHelp.success = true; jsonHelp.totlalCount = TotalRecords;// 记录总数 if (DSet != null) { DataTable DTable = DSet.Tables[0]; for (int i = 0; i < DTable.Rows.Count; i++) { // 循环生成JSON代码 jsonHelp.AddItem("Id", DTable.Rows[i]["Id"].ToString()); jsonHelp.AddItem("Name", DTable.Rows[i]["Name"].ToString()); jsonHelp.AddItem("StreetPrice", DTable.Rows[i]["StreetPrice"].ToString()); jsonHelp.AddItem("TypeName", DTable.Rows[i]["TypeName"].ToString()); jsonHelp.ItemOk(); } } Response.Write(jsonHelp.ToString()); // 输出JSON代码 } /// <summary> /// 获取数据 /// </summary> /// <param name="PageIndex">记录索引</param> /// <param name="PageSize">每页显示记录数</param> /// <param name="TotalRecords">总记录数</param> public DataSet GET_Product_Data(int start, int limit,out int TotalRecords) { SqlConnection _Connection = null; SqlDataAdapter _Adapter = null; DataSet DSet = null; try { _Connection = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["SQLContionString"].ToString()); _Connection.Open(); _Adapter = new SqlDataAdapter("SELECT [Id] FROM [Product] ",_Connection); DSet = new DataSet(); _Adapter.Fill(DSet); TotalRecords = Convert.ToInt32(DSet.Tables[0].Rows.Count); // 记录总数 if (TotalRecords < 1) return null; // 没有记录 int pageLowerBound = start+1; // 从第几条数据开始 int pageUpperBound = pageLowerBound + limit; // 每页多少条数据 StringBuilder sb = new StringBuilder(); if (TotalRecords >= pageLowerBound) { for (int i = pageLowerBound; i < TotalRecords && i < pageUpperBound; i++) { sb.AppendFormat("'{0}',", DSet.Tables[0].Rows[i-1][0].ToString());//构造ID in() 条件,取其中一页 } } else return null; // 没有记录 if (sb.Length > 1) sb.Remove(sb.Length - 1, 1);//删除最后一个逗号 StringBuilder strSql = new StringBuilder(); strSql.Append("SELECT a.[Id],a.[Name],a.[StreetPrice],b.TypeName "); strSql.Append(" FROM [Product] as a left join ProductType as b on a.Typeid = b.Typeid "); strSql.AppendFormat(" where a.[Id] in({0})", sb.ToString()); _Adapter = new SqlDataAdapter(strSql.ToString(), _Connection); DSet = new DataSet(); _Adapter.Fill(DSet); } finally { if (_Connection != null && _Connection.State == ConnectionState.Open) { _Connection.Close(); } } return DSet; } } }
第三步:返回JSON数据页面用作客户端呈现结果的载体(PagingControls.aspx)
<head id="Head1" runat="server"> <title></title> <link rel="stylesheet" type="text/css" href="../ext3/resources/css/ext-all.css" mce_href="ext3/resources/css/ext-all.css" /> <mce:script type="text/javascript" src="../ext3/adapter/ext/ext-base.js" mce_src="ext3/adapter/ext/ext-base.js"></mce:script> <mce:script type="text/javascript" src="../ext3/ext-all.js" mce_src="ext3/ext-all.js"></mce:script> <mce:script type="text/javascript" src="JS/PagingGridPanel.js" mce_src="JS/PagingGridPanel.js"></mce:script> <mce:script type="text/javascript"><!-- Ext.BLANK_IMAGE_URL = "../ext3/resources/images/default/s.gif"; Ext.onReady(function() { Ext.QuickTips.init(); Ext.form.Field.prototype.msgTarget = "side"; new PagingGridPanel(); // JS文件 }); // --></mce:script>
第四部:写JS脚本!使用返回JSON数据
相关文章推荐
- QML中使用AJAX,解析返回的JSON数据
- struts2拦截器如何返回json数据?如何使用Jquery(ExtJs)接收拦截器返回的数据?
- 使用Json比用string返回数据更友好,也更面向对象一些
- GWT入门介绍(使用JSON格式的数据通讯)
- C# 使用linq处理返回带datetime类型数据 json显示/date(xxxxx)/
- 如何在.NET MVC中使用jQuery并返回JSON数据
- jQuery使用Ajax操作JSON格式数据说明
- AJAX使用JSON 进行数据传输介绍
- [转载]mvc使用JsonResult返回Json数据
- easyui使用Ajax提交表单,返回Json数据
- spring boot新手教程之使用FastJson解析JSON数据以及解决返回中文乱码问题
- 使用okhttp时没有返回json数据
- 如何使用json在前后台进行数据传输实例介绍
- Android使用HttpURLConnection请求网络返回JSON数据并解析
- ashx文件结合ajax使用(返回json数据)
- 使用okhttp时没有返回json数据
- struts 2中使用json 返回数据给Extjs
- 使用Ajax发送Struts2请求返回JSON数据格式
- springmvc4整合AJAX使用@ResponseBody注解返回JSON数据格式
- jquery序列化form表单使用ajax提交后处理返回的json数据