一、手工编写JSON代码
1.添加引用
using System.Web.Services;
2.添加方法
//获取分类列表
[WebMethod]
public static string getFoodClasses(int parentID)
{
onnEntities onndb = new onnEntities();
string strJson = "{\"classlist\":[";
IQueryable<food_class> fcList = onndb.food_class.Where(s => s.class_ParentClassID == parentID);
foreach (food_class i in fcList)
{
strJson += "{\"id\": " + i.class_ID + ",\"title\":\" " + i.class_Title + "\"},";
}
strJson = strJson.Substring(0, strJson.Length - 1);
strJson += "]}";
return strJson;
}
二、利用JSON序列化和反序列化
- C#后台代码
/// <summary>
/// 获取二级分类
/// </summary>
/// <param name="FatherID">一级分类ID</param>
/// <returns></returns>
public JsonResult GetSourceClass(int FatherID)
{
List<foodSourceClass> ts = entities.foodSourceClass.Where(m => m.ClassFatherID == FatherID).ToList();
return Json(ts);
}
2.前台Ajax请求函数及反序列化
function Class1Change() {
var c1 = $("#Class1").val();//获取一级分类ID
var targetUrl = "/Common/GetSourceClass";//请求Action路径
var data = new FormData();
//FormData对象加入参数
data.append('FatherID', c1);
$.ajax({
type: 'post',
url: targetUrl,
cache: false, //不需缓存
processData: false, //需设置为false。因为data值是FormData对象,不需要对数据做处理
contentType: false, //需设置为false。因为是FormData对象,且已经声明了属性enctype="multipart/form-data"
data: data,
dataType: 'json',
success: function (data) {
var jsonData = JSON.stringify(data);// 转成JSON格式
var result = JSON.parse(jsonData);// 转成JSON对象
alert(result[0].Id);//弹出提示第一个对象的ID
},
error: function () {
alert("上传失败")
}
})
}
3.前台提示截图