【发布时间】:2017-06-30 16:38:00
【问题描述】:
我正在使用数据表从数据库中获取数据。我面临的问题是获取数据的控制器方法工作正常并返回我可以在 xhr 中看到的 DataSet,但数据未显示在 html 页面中。我无法弄清楚问题所在。在这方面的任何帮助将不胜感激。 这是我的代码 sn-p。
<table id="DbTable">
<thead>
<tr>
<th >ID</th>
<th>Name</th>
<th>E-mail</th>
<th>Address</th>
</tr>
</thead>
</table>
脚本代码:
$(document).ready(function () {
$.ajax({
url: '@Url.Action("GetCompanies", "Company")',
method: 'get',
dataType: 'json',
success: function (data) {
$('#DbTable').DataTable({
data: data,
columns: [
{ "data": "Id" },
{ "data": "Name" },
{ "data": "Email" },
{ "data": "Address" },
]
});
}
});
});
这是控制器代码:
[HttpGet]
public JsonResult GetCompanies()
{
try
{
IEnumerable<Company> company = _companyService.GetCompanies().ToList();
IEnumerable<CompanyListViewModel> viewModelListCompanies = Mapper.DynamicMap<IEnumerable<Company>, IEnumerable<CompanyListViewModel>>(company);
return new JsonSuccessResult(viewModelListCompanies);
}
catch (Exception ex)
{
Response.StatusCode = (int)ResponseCode.UnprocessableEntity;
return new JsonErrorResult(ex.ToString());
}
}
JsonSuccessResult 类:
public class JsonSuccessResult : JsonResult
{
public JsonSuccessResult()
{
Data = new { Success = true, Error = false, Message = "Data has been saved successfully" };
ContentEncoding = System.Text.Encoding.UTF8;
JsonRequestBehavior = JsonRequestBehavior.AllowGet;
}
public JsonSuccessResult(MessageCode messageCode)
{
Data = new { Success = true, Error = false, Message = MessageDictionary.SuccessMessages[messageCode] };
ContentEncoding = System.Text.Encoding.UTF8;
JsonRequestBehavior = JsonRequestBehavior.AllowGet;
}
public JsonSuccessResult(string message)
{
Data = new { Success = true, Error = false, Message = message };
ContentEncoding = System.Text.Encoding.UTF8;
JsonRequestBehavior = JsonRequestBehavior.AllowGet;
}
public JsonSuccessResult(IEnumerable enumerable, long totalCount = 0, int limit = 50, int offset = 0)
{
Data = new
{
Success = true,
Error = false,
Message = "Success",
DataSet = enumerable,
Limit = limit,
Offset = offset,
TotalCount = totalCount,
};
ContentEncoding = System.Text.Encoding.UTF8;
JsonRequestBehavior = JsonRequestBehavior.AllowGet;
}
public JsonSuccessResult(object data)
{
Data = new
{
Success = true,
Error = false,
Message = "Success",
Data = data
};
ContentEncoding = System.Text.Encoding.UTF8;
JsonRequestBehavior = JsonRequestBehavior.AllowGet;
}
public JsonSuccessResult(int val)
{
Data = new
{
Success = true,
Error = false,
Message = "Success",
Data = val
};
ContentEncoding = System.Text.Encoding.UTF8;
JsonRequestBehavior = JsonRequestBehavior.AllowGet;
}
}
【问题讨论】:
-
JsonSuccessResult到底是什么?我搜索了它,只在其他 SO 问题中看到它,代码与您的代码非常相似。如果它把结果放在像data这样的属性中,而不是只返回原始数组,则需要相应地调整 JS。 -
JsonSuccessResult 是一个类,如果请求的操作成功完成,则使用枚举和字典返回成功消息。
-
那么返回的 JSON是什么样的?
-
我也用那个类更新了代码
-
返回的 Json 数据集如下: DataSet : [{Id: 1, Name: "imran", Owner: "sd", Email: "bc130403039@vu.edu.pk"}] 0 : {Id:1,名称:“imran”,所有者:“sd”,电子邮件:“bc130403039@vu.edu.pk”} 电子邮件:“bc130403039@vu.edu.pk”Id:1 名称:“imran”所有者: “sd”错误:假限制:50 消息:“成功”偏移量:0 成功:真 TotalCount:0
标签: jquery ajax asp.net-mvc datatables