下面是在asp.net中使用JSON的步骤,
在UI层,需要添加"System.ServiceModel.Web"引用.
1.首先获得想要的数据
List<Models.Blog_albumsInfo> All_album=Bll.Blog_albums.FindAllAlbums(user_id);
2.实例化JSON对象,
var json = new
DataContractJsonSerializer(typeof(List<Models.Blog_albumsInfo>),
new Type[] {
typeof(string) });
3.将JSON获得的数据写到上下文的响应中
json.WriteObject(context.Response.OutputStream, All_album);
在js中接收到的数据,会是这样一种形式
/**************
[{ "Album_fm": "1", "Album_id": 18, "Album_name": "靓照1", "Sort": 18, "User_id": 1 },
{ "Album_fm": "1", "Album_id": 17, "Album_name": "靓照7", "Sort": 17, "User_id": 1 },
{ "Album_fm": "1", "Album_id": 16, "Album_name": "靓照6", "Sort": 16, "User_id": 1 }]
**************/
上面的形式, 已经很明了的表示了实体类每个对象的数据,只需要进行字符串处理,即可得到相应数据,
在js中,可以使用eval函数把字符串数组转换成dom对象,循环遍历即可.
//转成dom对象
var obj = eval("(" + data_arr[0] +
")");
for (var i = 0; i < obj.length; i++) {
var id = obj[i].Album_id;//相应数据
var name = obj[i].Album_name;//相应数据...
}
需要注意的是,以上方法,是针对VS2008,并且已经打上SP1补丁的. 如果没有打SP1补丁.还需要更多步骤
UI层添加“System.Runtime.Serialization”引用。DataContract
对实体类添加[DataContract]特性,另外对每个属性添加[DataMember]特性,其他步骤与上面相同。
asp页面js代码:
$(function () { $("#banjiSelect").change(function () { //当第一个下拉列表变动内容时第二个下拉列表将会显示 var banjiId = $("#banjiSelect").val(); if (null != banjiId && "" != banjiId) { $.getJSON("JobGetJSONHandler.ashx",{ id: banjiId }, function (myJSON) { var options = ""; if (myJSON.length > 0) { for (var i = 0; i < myJSON.length; i++) { options += "<option value=" + myJSON[i].id + ">" + myJSON[i].name + "</option>"; } } else { options = "<option value='0' selected='selected'>请选择姓名</option>"; } $("#studentNameSelect").html(options); }); } }); });