在使用layui.table组件时,用action向前端传table所需要的数据时,我将数据以json字符串的格式传给前端,但前端总是读取不到数据。所用的action方法如下:
/// <summary>
/// 获取table的json数据
/// </summary>
/// <returns></returns>
public ActionResult GetJson()
{
//这里读取数据库中的数据
SqlDataReader sdr = SqlHelper.ExecuteReader("select * from user_info");
//该方法返回一个jsonarray格式的字符串
string jts = SqlHelper.ToJsonArrayString(sdr);
var result = new
{
code = 0,
msg = "",
count = "",
data = jts
};
return Json(result, JsonRequestBehavior.AllowGet);
}
jts是一个json数组格式的字符串即[{},{}]这种格式,这样写前端的页面无法将data转化为jsonaArray格式的数据,从而无法正确显示数据
查找了许多原因和解决办法,要使前端能将数据正确解析成JsonArray对象数据,必须在后台传递时对json字符串进行反序列化(将json字符串转化为相应的对象或者List)
具体的json数组字符串转化为list可以参考上一篇博客:.net mvc——将json数组字符串转化为List(反序列化)
修改后可以正确传数据的action代码:
/// <summary>
/// 获取table的json数据
/// </summary>
/// <returns></returns>
public ActionResult GetJson()
{
SqlDataReader sdr = SqlHelper.ExecuteReader("select * from user_info");
string jts = SqlHelper.ToJsonArrayString(sdr);
List<user_info> list = Newtonsoft.Json.JsonConvert.DeserializeObject<List<user_info>>(jts);
var result = new
{
code = 0,
msg = "",
count = list.Count,
data = list
};
return Json(result, JsonRequestBehavior.AllowGet);
}
后端向前端传递list对象,这时前端才可以正确解析数据