2015-05-15 2 views
0

Я пытаюсь заполнить DataTable из объекта JSON, но получаю следующее сообщение об ошибке:Отправка JSON объектов в DataTables из JavaScript

DataTables warning: table id=filteredAlertsTable - Requested unknown parameter 'messageId' for row 0. For more information about this error, please see 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" } 
     ] 
    }); 

Я получаю DataSet от переменной javascript я пробовал следующее:

[{ 
    "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> 
+0

Я предлагаю передать тот же 'format' как json, который соответствует вашей инициализации в' dataTables'. Например: если 'messageId' является первым« mData »во время инициализации, добавьте его как первый элемент массива в объект' json', который передается обратно !! –

+0

Из моего опыта использования ** DataTables ** и такого рода ошибок вы должны дважды проверить свой HTML и убедиться, что у вас столько строк, сколько у вас есть заголовки таблиц. Это может быть проблема, не могу точно сказать, пока не увижу HTML –

+0

Добавлен HTML-код – Zeeshan

ответ

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/

Смежные вопросы