DataTables警告:从'0'行的数据源请求未知参数'0'

Ale*_*ber 64 jquery-datatables

请问有谁知道,下面这个非常简单的HTML文件出了什么问题?

在此输入图像描述

我只是想使用一个对象数组作为DataTables的数据源:

tests.html:

<html>
<head>
<link type="text/css" rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/redmond/jquery-ui.css">
<link type="text/css" rel="stylesheet" href="https://ajax.aspnetcdn.com/ajax/jquery.dataTables/1.9.2/css/jquery.dataTables_themeroller.css">
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js"></script>
<script type="text/javascript" src="https://ajax.aspnetcdn.com/ajax/jquery.dataTables/1.9.2/jquery.dataTables.min.js"></script>
<script type="text/javascript">

var data = [
    {"Name":"UpdateBootProfile","Result":"PASS","ExecutionTime":"00:00:00","Measurement":[]},
    {"Name":"NRB Boot","Result":"PASS","ExecutionTime":"00:00:50.5000000","Measurement":[{"TestName":"TOTAL_TURN_ON_TIME","Result":"PASS","Value":"50.5","LowerLimit":"NaN","UpperLimit":"NaN","ComparisonType":"nctLOG","Units":"SECONDS"}]},
    {"Name":"NvMgrCommit","Result":"PASS","ExecutionTime":"00:00:00","Measurement":[]},
    {"Name":"SyncNvToEFS","Result":"PASS","ExecutionTime":"00:00:01.2500000","Measurement":[]}
];

$(function() {
        var testsTable = $('#tests').dataTable({
                bJQueryUI: true,
                aaData: data,
                aoColumns: [
                        { mData: 'Name' },
                        { mData: 'Result' },
                        { mData: 'ExecutionTime' }
                ]
        });
});

</script>
</head>
<body>

<table id="tests">
<thead>
<tr>
<th>Name</th>
<th>Result</th>
<th>ExecutionTime</th>
</tr>
</thead>
<tbody>
</tbody>
</table>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

更新:好的,我得到了作者的答案,使用更新版本的DataTables或将mData重命名为mDataProp

小智 80

对于nullundefined value error,只需将此行添加到属性:,"columnDefs": [ { "defaultContent": "-", "targets": "_all" } ]

示例:

oTable = $("#bigtable").dataTable({
  "columnDefs": [{
    "defaultContent": "-",
    "targets": "_all"
  }]
});
Run Code Online (Sandbox Code Playgroud)

警报框不会再次显示,任何空值都将替换为您指定的值.

  • 这是可行的,但这也隐藏了实际的问题。更好地查找、格式化或修复空源 (4认同)

Bum*_*tle 26

您正在使用一组对象.你可以使用二维数组吗?

http://www.datatables.net/examples/data_sources/js_array.html

看到这个jsfiddle:http://jsfiddle.net/QhYse/

我使用了这样的数组,它运行良好:

var data = [
    ["UpdateBootProfile","PASS","00:00:00",[]] ,
    ["NRB Boot","PASS","00:00:50.5000000",[{"TestName":"TOTAL_TURN_ON_TIME","Result":"PASS","Value":"50.5","LowerLimit":"NaN","UpperLimit":"NaN","ComparisonType":"nctLOG","Units":"SECONDS"}]] ,
    ["NvMgrCommit","PASS","00:00:00",[]] ,
    ["SyncNvToEFS","PASS","00:00:01.2500000",[]]
];
Run Code Online (Sandbox Code Playgroud)

编辑以包括对象数组

这个问题有一个可能的解决方案:jQuery DataTables fnrender with objects

这个jsfiddle http://jsfiddle.net/j2C7j/使用了一个对象数组.为了得不到错误,我必须用3个空白值填充它 - 不太理想,我知道.您可以使用fnRender找到更好的方法,如果您这样做,请发布.

var data = [
   ["","","", {"Name":"UpdateBootProfile","Result":"PASS","ExecutionTime":"00:00:00","Measurement":[]} ]

];

$(function() {
        var testsTable = $('#tests').dataTable({
                bJQueryUI: true,
                aaData: data,
                aoColumns: [
                        { mData: 'Name', "fnRender": function( oObj ) { return oObj.aData[3].Name}},
                        { mData: 'Result' ,"fnRender": function( oObj ) { return oObj.aData[3].Result }},
                        { mData: 'ExecutionTime',"fnRender": function( oObj ) { return oObj.aData[3].ExecutionTime } }
                ]
        });
});
Run Code Online (Sandbox Code Playgroud)

  • 谢谢投票.我修改了包含对象数组的答案.不幸的是,不得不填充三个空白,否则DataTables仍然抱怨. (2认同)

zer*_*sed 10

这困扰了我一个多小时.

如果您正在使用dataSrc选项和列defs选项,请确保它们位于正确的位置.我在ajax设置中嵌套了列defs并且丢失了太多时间来计算出来.

这很好:

好

这个不好:

在此输入图像描述

微妙的差异,但真实足以造成脱发.

  • Yuno使用代码编辑器,所以我可以复制粘贴ლ(ಠ益ಠლ) (2认同)

Fle*_*lea 7

我遇到了同样的问题.事实证明,在最后一栏之后,我错过了逗号.我的生命浪费了30分钟,我永远不会回来!

在此输入图像描述

  • 但什么是解决方案? (3认同)
  • 添加那些列开发人员解决了我的问题! (2认同)

Kri*_*hna 5

确保列名称相同。它们区分大小写。在这里,就我而言,当模型的列名称大写并且我在 ajax 请求的数据中使用所有小写字母时,我收到此错误。

因此,我通过与现有模型名称完全相同的方式匹配列名称来解决。

数据表绑定

$("#Customers").DataTable({
            ajax: {
                url: "/api/customers/",
                dataSrc: ""
            },
            columns: [
                {
                    data: "Name",
                    render: function (data, type, customer) {
                        return "<a href='/customers/edit/" + customer.Id + "'>" + customer.Name + "</a>";


                    }

                },
                {
                    data: "Name"
                },
                {
                    data: "Id",
                    render: function (data) {
                        return "<button class='btn-link js-delete' data-customer-id=" + data + ">Delete</button>";
                    }
                }
            ]
        });
Run Code Online (Sandbox Code Playgroud)

网络API方法:

  public IEnumerable<Customer> GetCustomers()
        {
            return _context.Customers.ToList();

        }
Run Code Online (Sandbox Code Playgroud)

我的模特:-

 public class Customer
    {
        public int Id { get; set; }

        [Required]
        [StringLength(255)]
        public string Name { get; set; }        

        [Display(Name="Date Of Birth")]        
        public DateTime? BirthDate { get; set; }


        public bool isSubscribedToNewsLetter { get; set; }

        public MembershipType MembershipType { get; set; }

        [Display(Name="Membership Type")]
        [Required]
        public byte MembershipTypeId { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

所以在我的例子中,我正在用列(名称,名称,Id)填充数据表..我正在复制第二个列名称进行测试。


moh*_*rma 5

当无法找到数据表配置中定义的请求字段时,这是数据表中非常常见的情况。
例如:

                "aoColumns": [{
                    mData: 'mobile', sWidth: "149px;"
               }, {
                    mData: 'name', sWidth: "121px;"
               }, {
                    mData: 'productName', sWidth: "116px;"
                            }
            }];
Run Code Online (Sandbox Code Playgroud)

在这里,如果 DataTable 没有收到上述属性。它将生成此警告:

DataTables warning: Requested Unknown parameter '0' from the data source for row '0'

要克服这个问题,您只需在“aoColumns”中设置默认值

例如:

  "aoColumns": [{
                mData: 'mobile',sDefaultContent :  '',sWidth: "149px;"
           }, {
                mData: 'name',sDefaultContent :  '', sWidth: "121px;"
           }, {
                mData: 'productName',sDefaultContent :  '', sWidth: "116px;"
              }
        }];
Run Code Online (Sandbox Code Playgroud)

sDefaultContent将抑制警告。
注意:此属性可能会根据您使用的数据表版本进行更改。