开发者问题收集

数据表 jquery.dataTables.min.js:181 未捕获的类型错误:无法读取未定义的属性“长度”

2016-09-19
1099

我无法指定问题所在,这是我的代码:

html:

769105448

服务器端:

353177185

这是我的ajax调用:

887392834

我遇到了此错误:“ jquery.datatables.min.js: 181 Untureck TypeError:无法读取未定义的属性“长度”

注意:我正在使用jquery-1.12.3.js& DataTables 1.10.12。

任何帮助都将不胜感激。

2个回答

最后我找到了问题所在:

首先:数据表需要特定的格式,因此我将服务器端代码更改为如下形式:

var result = new
            {
                **draw = 1,
                recordsTotal = db.Company.ToList().Count,
                recordsFiltered = db.Company.ToList().Count,**
                data = (from company in db.Company.ToList()
                        select new
                        {
                            Id = company.CompanyId,
                            RegNo = company.RegestrationNumber,
                            Name = company.Name,
                            Industry = company.IndustryType.Name,
                            Size = company.CompanySize.Name,
                            LineOfDefence = company.LineOfDefence.Name,
                            Address = company.Address,

                        }).ToArray()
            };
            return Json(result
            , JsonRequestBehavior.AllowGet);

其次:我已将这些行添加到脚本中

<script>
    $(document).ready(function ()
    {
        $('#companies').DataTable( {
            "ajax": {
                url: "/Company/GetCompanyGrid",
                type: "GET",
                dataType: "json"
            },"columns": [
            { "data": "Id" },
            { "data": "RegNo" },
            { "data": "Name" },
            { "data": "Industry" },
            { "data": "Size" },
            { "data": "LineOfDefence" },
            { "data": "Address" },
            { "data": "Logo" },
            { "data": null },
            ]
        });
    });
</script>

现在,一切运行正常。

BaDr Amer
2016-09-19

Datatables 要求返回的 json 具有特定格式,如 文档 所述 - 请参阅“返回的数据”部分。

您的 json 应如下所示:

return Json(new
{
      param.draw,
      recordsTotal = result.Count,
      recordsFiltered = result.Count,
      data = result
}, JsonRequestBehavior.AllowGet);

错误可能是由于数据表查找不存在的字段所致。请注意, draw 值是在原始 GetCompanyGrid() 请求中发送的,您无需自行生成。

markpsmith
2016-09-19