【问题标题】:Sending JSON Objects in DataTables from javascript从 javascript 发送数据表中的 JSON 对象
【发布时间】:2015-07-27 04:58:39
【问题描述】:

我正在尝试从 JSON 对象填充数据表,但收到以下错误:

DataTables 警告:表 id=filteredAlertsTable - 请求第 0 行的未知参数“messageId”。有关此错误的详细信息,请参阅http://datatables.net/tn/4

这是我的代码:

var dataSet = '${data}';
$('#filteredAlertsTable').dataTable( {
        "bProcessing": true,
        "aaData": dataSet,
        "aoColumns": [
                      { "mData": "messageId" },
                      { "mData": "host" },
                      { "mData": "creationTime" },
                      { "mData": "resolvedTime" },
                      { "mData": "severity" },
                      { "mData": "alertText" }
        ]
    } );

我从 javascript 变量中获取 dataSet,我尝试传递以下内容,

[{
    "severity": "Severity",
    "creationTime": "CreationTime",
    "resolvedTime": "ResolvedTime",
    "appName": "AppName",
    "host": "Host",
    "messageId": "MessageId",
    "alertText": "AlertText"
},
{
    "severity": "Severity1",
    "creationTime": "CreationTime1",
    "resolvedTime": "ResolvedTime1",
    "appName": "AppName1",
    "host": "Host1",
    "messageId": "MessageId1",
    "alertText": "AlertText1"
}]

{
    "mData": [{
        "severity": "Severity",
        "creationTime": "CreationTime",
        "resolvedTime": "ResolvedTime",
        "appName": "AppName",
        "host": "Host",
        "messageId": "MessageId",
        "alertText": "AlertText"
    },
    {
        "severity": "Severity1",
        "creationTime": "CreationTime1",
        "resolvedTime": "ResolvedTime1",
        "appName": "AppName1",
        "host": "Host1",
        "messageId": "MessageId1",
        "alertText": "AlertText1"
    }]
}

我已经想过this 的问题,但我仍然无法弄清楚有什么问题

这是我的 HTML 代码。

<table id="filteredAlertsTable"
    class="table table-striped table-bordered ">
    <thead>
        <tr>
            <th>Message Id</th>
            <th>Host</th>
            <th>Creation Time</th>
            <th>Resolved Time</th>
            <th>Severity</th>
            <th>Alert Text</th>
        </tr>
    </thead>
    <tbody>
    </tbody>
</table>

【问题讨论】:

  • 我建议将相同的 format 传递回 json,这与您在 dataTables 中的初始化相匹配。例如:如果messageId 是初始化期间的第一个mData,则将其作为数组的第一个元素附加到json 对象中,该对象被传回!!
  • 根据我对 DataTables 和此类错误的经验,您应该仔细检查您的 HTML,并确保您的行数与表头数一样多。这可能是问题所在,在我看到 HTML 之前无法确定

标签: javascript jquery json datatable jquery-datatables


【解决方案1】:

这是因为dataSet 是一个字符串。很可能是由'${data}' 引起的,所以它对于dataTable 看起来像这样:

var dataSet = '[{ "severity": "Severity", "creationTime": "CreationTime", "resolvedTime": "ResolvedTime", "appName": "AppName", "host": "Host", "messageId": "MessageId",    "alertText": "AlertText"},{    "severity": "Severity1",    "creationTime": "CreationTime1", "resolvedTime": "ResolvedTime1", "appName": "AppName1", "host": "Host1", "messageId": "MessageId1", "alertText": "AlertText1"}]';

作为 JSON,它可以立即工作 -> http://jsfiddle.net/q78tu48q/

所以请确保你的字符串实际上是 JSON格式的:

$('#filteredAlertsTable').dataTable( {
        "bProcessing": true,
        "aaData": JSON.parse(dataSet),
        "aoColumns": [
                      { "mData": "messageId" },
                      { "mData": "host" },
                      { "mData": "creationTime" },
                      { "mData": "resolvedTime" },
                      { "mData": "severity" },
                      { "mData": "alertText" }
        ]
    } );

演示 -> http://jsfiddle.net/u76bLpa3/

【讨论】:

    猜你喜欢
    • 2015-07-07
    • 2014-07-08
    • 1970-01-01
    • 1970-01-01
    • 2019-04-13
    • 1970-01-01
    • 2015-12-07
    • 1970-01-01
    • 2011-09-19
    相关资源
    最近更新 更多