2015-06-15 10 views
2

Так что я пытаюсь реализовать таблицу разбиения на страницы с помощью плагина datatables, это мой первый раз, используя этот плагин. Я выполнил документацию по плагину и попытался получить значения с сервера с помощью Ajax, как описано в документации плагинов.jQuery DataTables с Node.js

Я, кажется, получаю следующую ошибку, как только я сделаю запрос на получение, и я не уверен в почему?

Ошибка: Uncaught TypeError: Не удается прочитать свойство 'длина' неопределенной

На стороне клиента я следующий код

viewReports = { 
    init: function(){ 
     $('#paginatedData').DataTable({ 
      "processing": true, 
      "serverSide": true, 
      "ajax": '/viewreports' 
     }); 

    } 
}; 

$(document).ready(viewReports.init); 

В моей стороне сервера у меня есть следующие

router.get('/viewreports', function(res, req){ 

    async.parallel({ 
     viewReports: function(callback){ 
      restCall('/rest/bugbounty/latest/message/searchReport', 'POST', parameters, function(data){ 
       callback(null, data); 
      }); 
     } 
    }, function(err, result){ 
     if(!err){ 
      res.send(result.viewReports); 
      res.render('viewreports'); 
     } 
    }); 
}); 

Возврат JSON:

{ reportList: [ { reportID: 'EIBBP-448', eBayUserID: ' ', reportStatus: 'New', summary: 'BugBounty Report created by Raj', lastUpdatedDate: '2015-06-15 01:05', createdDate: '2015-06-15 01:05', paypalLoginID: '[email protected]' } ], searchStatus: 'Success', eBayUserID: '', errorCode: '0', rowCount: '6', pageNumber: '1', paginationValue: '1', paypalLoginID: '[email protected]' }

Было бы здорово знать, если есть кто-то, кто работал с обработкой на стороне сервера для Node.js DataTables

+0

В режиме обработки на стороне сервера ваш код на стороне сервера должен возвращать данные в формате JSON, как описано [здесь] (https://datatables.net/manual/server-side#Returned-data). Отправьте файл JSON, который возвращает ваш сервер. –

+0

, поэтому нет конкретного файла, в котором я сохраняю данные json, но после визуализации маршрута '/ viewreports' я могу видеть следующее значение на консоли {reportList: [{reportID: 'EIBBP-448', eBayUserID: '', reportStatus: 'Новый', резюме: 'BugBounty отчет, созданный Раджа', lastUpdatedDate: '2015-06-15 1:05', createdDate: «2015-06-15 1:05 ', paypalLoginID:' raaj @ paypal.ком '}], SearchStatus: 'Успех', eBayUserID: '', ERRORCODE: '0', ROWCOUNT: '6', PageNumber: '1', paginationValue: '1', paypalLoginID:' [email protected] '} – Raj

+0

Нужно ли улаживать вышеупомянутое значение json? – Raj

ответ

2

Вам нужно определить dataSrc и columns.data - должно работать:

var table = $('#example').DataTable({ 
    processing: true, 
    serverSide: true, 
    ajax: { 
     url: "/viewreports", 
     dataSrc: "reportList" 
    },  
    columns: [ 
     { data : "reportID" }, 
     { data : "eBayUserID" }, 
     { data : "reportStatus" }, 
     { data : "summary" }, 
     { data : "lastUpdatedDate" },   
     { data : "createdDate" },   
     { data : "paypalLoginID" } 
    ]  
}); 

на пустой стол:

<table id="example"></table> 
  • dataSrc, чтобы указать, что массив, содержащий элементы строки называется (причина «Не удается прочитать свойство„длина“неопределенной»)
  • columns.data отобразить свойства элемента столбцов
+0

спасибо !! что заставило его работать – Raj

0

Вы просто не должны беспокоиться с обработкой на стороне сервера. Я использовал простой способ обмануть dataTables инициализации.

Во-первых, вам нужно будет извлечь данные, которые вы хотите отобразить в таблице, наиболее удобным способом, после того как вы подтвердите, что данные отображаются хорошо, теперь отправляйтесь туда, где вы инициализируете dataTables, и делайте так, чтобы он задерживался раньше инициализация.

setTimeout(() => { 
    $('#yourtable').dataTable({ 
     // datatables customization options 
    }); 
}, 100) 

Например, в моем случае я дал ему задержку в 100 мс, и он работает как шарм.