json通过一般处理程序向jquery传数据的总结(基于ligerui)
注意事项:
1 主要是返回数据类型要有"[ ]"这种格式
一 一般处理程序内容 test.ashx内容
context.Response.ContentType = "text/plain";
(1)字符串传输
string data = "[{\"name\":\"zhangsan\",\"id\":1},{\"name\":\"lisi\",\"id\":2}]"; context.Response.Write(data);
(2) 实体类传输
先定义实体类 shuju.cs
private string _name; public string name { get { return _name; } set { _name = value; } } private int _id; public int id { get { return _id; } set { _id= value; } }
再编写一般处理程序内容
shuju _shuju= new shuju(); _shuju.id= 3; _shuju.name= "wangming"; JavaScriptSerializer serializer = new JavaScriptSerializer();//using System.Web.Script.Serialization; string data = "[" + serializer.Serialize(_shuju) + "]"; context.Response.Write(data);
(3) DataTable类型(参考了网上方法)
DataSet ds = jtBll.GetList("");//获取DataSet类型数据 string strDt = DsToJson(ds.Tables[0]); context.Response.Write(strDt);
转换方法
/// <summary> /// DataTable转Json /// </summary> /// <param name="dtb"></param> /// <returns></returns> private string DtToJson(DataTable dtb) { JavaScriptSerializer jss = new JavaScriptSerializer(); ArrayList dic = new ArrayList(); foreach (DataRow row in dtb.Rows) { Dictionary<string, object> drow = new Dictionary<string, object>(); foreach (DataColumn col in dtb.Columns) { drow.Add(col.ColumnName, row[col.ColumnName]); } dic.Add(drow); } return jss.Serialize(dic); }
二 前台页面内容
采用了ligerUI的jquery下拉控件
(1)js内容
<script type="text/javascript"> $(function () { $("#ddlleixing").ligerComboBox({ // data: [ //数据源 json格式 // { text: '11', id: 'a' }, // { text: '22', id: 'b' }, // { text: '33', id: 'c' } // ], url: 'test.ashx', textField:'name', //text对应的字段名 valueField: 'id' //value对应的字段名 }); }); </script>
(2)html内容
<div> <input id="ddlleixing" type="text" /> </div>