我有一个MVC控制器,我使用JsonConvert.SerializeObject
转换数据表结果并返回如下
public JsonResult GetJson(DateTime StartDate)
{
DataTable dt = new DataTable();
using (SqlConnection con = new SqlConnection(context.Database.Connection.ConnectionString))
{
using (SqlCommand cmd = new SqlCommand("usp_GetDetails"))
{
cmd.Connection = con;
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@startdate", SqlDbType.DateTime);
cmd.Parameters["@startdate"].Value = StartDate;
using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
{
sda.Fill(dt);
}
}
}
return Json(new { success = true, data = JsonConvert.SerializeObject(dt) },
JsonRequestBehavior.AllowGet);
}
但是当我复制我得到的结果时,同样在小提琴里工作
https://jsfiddle.net/szq2ker4/1/ 这就是我在jquery中进行ajax调用并按照小提琴进行其余操作的方法,但我没有看到小提琴中的预期
$.get("/controller/GetJson", { StartDate: date},
function (response) { var result = JSON.parse(response.data);})
我得到的结果如下,有人可以让我知道我在哪里做错了
$.get("/controller/GetJson", { StartDate: date},
function (response) { var result = JSON.parse(response.data);}).fail(function (response) { **alert('failed')**;});
答案 0 :(得分:0)
我在这里找到了一个question的答案,可以帮助你:
您的对象层次结构中似乎存在循环引用 JSON序列化程序不支持。你需要所有的吗? 列?您只能在视图中选择所需的属性:
return Json(new
{
PropertyINeed1 = data.PropertyINeed1,
PropertyINeed2 = data.PropertyINeed2
});
这将使您的JSON对象更轻松,更易于理解。如果 你有很多属性,AutoMapper可以自动使用 DTO对象和View对象之间的映射。