【问题标题】:DataTables Error : “Requested unknown parameter”数据表错误:“请求的未知参数”
【发布时间】:2014-04-03 09:20:20
【问题描述】:
var headers = [{ "mDataProp": "Agents" },{ "mDataProp": "Buyer" },{ "mDataProp": "Date" }];
$(document).ready(function () {   
    $('#data-table').dataTable({
        "bFilter": false,
        "bLengthChange": false,
        "iDisplayLength": 25,
        "bJQueryUI": true,
        "bServerSide": true,
        "bProcessing": true,
        "sPaginationType": "full_numbers",
        "aoColumns": headers,
        "sAjaxSource": '/report/TestPaging',         
    });
});

如果我从代码中删除 aoColumns,数据表会正常生成,但是当我添加 aoColumns 时,我会得到:

DataTables 警告(表 id = 'data-table'):从第 0 行的数据源请求未知参数 'Agents'

HTML:

<table id="data-table">
                <thead>
                    <tr>                          
                        <th>tmp</th>
                        <th>tmp</th>
                        <th>tmp</th>
                    </tr>
                </thead>

                <tbody>
                </tbody>
            </table>

如何配置标头名称?我需要它们来进行分类。 它们必须与“th”标签中的相同吗? 我的控制器的 Json 响应没问题,因为当我删除 aoColumns 时它呈现正常

我有 string[][](var data) 每行有 3 个字符串,并将其返回为

  Json(new{
            sEcho = param.sEcho,
            iTotalRecords = visitRepository.Query.Count(),
            iTotalDisplayRecords = visitRepository.Query.Count(),
            aaData = data
        }, JsonRequestBehavior.AllowGet);

【问题讨论】:

  • 你的对象/json长什么样子?
  • 这应该不是问题,没有aoColumns行的表格生成就好了。
  • 看我的回答,我想,不 - 我确定 - 它实际上 is 是一个 JSON 问题 :) 尝试重命名小提琴中的一个 JSON antries,只有一个列,就像第一个“代理”一样,您可以重现错误。

标签: asp.net-mvc json jquery-datatables


【解决方案1】:

您遇到的错误是由 JSON 的内容与您的 aoColumns 定义不匹配引起的。您在 aoColumns 中定位的名称必须与 JSON 中的名称​​完全相同 JSON 中每个对象的长度必须等于原始 HTML 表格中的列数。有关说明,请参阅docs。在您的情况下,JSON 应该如下所示:

[{
  "Agents": "tM4Ga0zX",
  "Buyer": "ZKwMEiIa",
  "Date": "K3lS2yn9"
},
...]

...而且您的 JSON 不遵循该方案。如果您没有使用aoColumns,那么数据是按索引插入的,而不是按名称插入的——这就是为什么没有它它对您有用。

您可以通过sTitle 属性配置标题名称(标题):

aoColumns: [
  { mDataProp: "Agents", sTitle : "Agents" }, 
  { mDataProp: "Buyer", sTitle : "Buyer" },
  { mDataProp: "Date", sTitle : "Date" }
]

根据您的问题查看此演示 -> http://jsfiddle.net/kLR7G/

【讨论】:

  • 所以我不能只使用 string[][] 并将其作为 JSON 返回?
  • 这是一个很好的答案(asp.net-mvc-3 和 sAjaxSource)-> stackoverflow.com/questions/7835960/…。为了避免错误,重要的是形成aaData正确,尝试链接中接受的答案中的建议,并留下sEchoiTotalRecords等。
  • 问题是我的列没有预先设置,根据其他条件,它们可以是很多东西。我希望只命名标题,以便我可以使用动态 linq 进行排序,但是使用这种格式格式化 json 会有点困难
  • 好吧,你为什么不生成整个表服务器端?当我不知道前面的结果时,我自己就是这样做的。我返回整个东西,&lt;table id="something"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt; 和完整的&lt;tbody&gt;,然后我调用 dataTables。这种方法的缺点是在浏览器报告超时之前您被限制为或多或少 5000 行,因为初始化时 dataTables 很慢(jQuery 函数很慢)。遗憾的是,我对asp.net知之甚少,只能说为什么数据表会抛出错误以及如何避免它:(
  • 我有几千行,所以我必须使用分页来减少加载时间。并且要使用分页,我无法生成整个表格,因为那会花费太长时间,这样我可以在几毫秒内获得表格。我会看看我能做些什么来生成与标题一致的 json 响应
猜你喜欢
  • 1970-01-01
  • 2018-04-20
  • 2015-09-01
  • 2019-09-16
  • 2021-09-14
  • 1970-01-01
  • 1970-01-01
  • 2016-09-29
相关资源
最近更新 更多