【问题标题】:Data not showing using datatables未使用数据表显示数据
【发布时间】: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


【解决方案1】:

您返回的JsonSuccessResult 对象不是数组,它是一个对象,其数据位于名为DataSet 的属性中。所以你需要改变

success: function (data) {
    $('#DbTable').DataTable({
        data: data,

到

success: function (data) {
    $('#DbTable').DataTable({
        data: data.DataSet,

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    • 2018-08-31
    • 2016-06-22
    • 2017-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多