2016-09-16 6 views
1

Я пытался добавить DataTable в свое приложение. https://datatables.net/ У меня есть веб-страница, в которой таблица данных должна отображаться в событии onclick, когда происходит запуск триггера события onclick события ajax, и данные будут поступать из сервлета Java. Ниже мой кодJQuery Datatables с Java Json не работает

JSP:

<table id="testTable" class="display" cellspacing="0" 
          width="100%" cellpadding="0" border="0"> 
          <thead> 
           <tr> 
            <th>Test</th> 
            <th>Description</th> 
            <th>Result</th> 
            <th>Start Time</th> 
            <th>End Time</th> 
           </tr> 
          </thead> 

         </table> 

JQuery:

function getTestData(name, e, bId) { 
     $('#testTable').dataTable({ 

      "serverSide": true, 
      "processing": true, 
      "ajax":{     
      "type" : "POST", 
      "dataSrc": "data", 
      "url" : "Servlet", 
      "dataType": "json", 
      "data" : { 
       name : name, 
       e : e, 
       bId : bId, 
       method : "getTestData" 
      }, 
      "sEcho": 0, 
      "processing": true, 
       "columns":[ 
         { "data": "tId" }, 
         { "data": "description" }, 
         { "data": "rst" }, 
         { "data": "startDate" }, 
         { "data": "endDate" } 
        ]  
      } 
     }); 
    } 

Servlet возвращается ниже JSON:

{ 
     "data": [ 
     { 
      "tId": "1", 
      "description": "desc", 
      "rst": "P", 
      "startDate": "2016-09-13 07:59:31.0", 
      "endDate": "2016-09-13 07:59:51.0" 
     }, 
     { 
      "tId": "2", 
      "description": "desc", 
      "rst": "S", 
       "startDate": "2016-09-13 07:59:51.0", 
      "endDate": "2016-09-13 07:59:51.0" 
      } 
     ] 
     } 

Я получаю ниже ошибки:

DataTables warning: table id=testTable - Requested unknown parameter '0' for row 0, column 0. 

enter image description here

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

Заранее спасибо

+0

Если вы используете '{«данные»: 0}, {" data ": 1}' и т.д .. это работает? – markpsmith

+0

Да, но не повезло ... – itin

+0

Вы имеете в виду Да, это работает, или Нет, нет? – markpsmith

ответ

0

JSON должен быть в указанном ниже формате

{ 
    "draw": 1, 
"recordsTotal": 57, 
"recordsFiltered": 57, 
"data": [ 
[ 
    "Airi", 
    "Satou", 
    "Accountant", 
    "Tokyo", 
    "28th Nov 08", 
    "$162,700" 
], 
[ 
    "Angelica", 
    "Ramos", 
    "Chief Executive Officer (CEO)", 
    "London", 
    "9th Oct 09", 
    "$1,200,000" 
] 
] 
} 

https://datatables.net/examples/data_sources/server_side.html

0

Изменить код инициализации в соответствии формат данных JSON, как показано ниже.

$('#testTable').dataTable({ 
    "ajax": { 
     "type": "POST", 
     "url": "Servlet" 
    }, 
    "columns": [ 
     { "data": "tId" }, 
     { "data": "description"}, 
     { "data": "rst" }, 
     { "data": "startDate" }, 
     { "data": "endDate"} 
    ] 
}); 

См. this jsFiddle для кода и демонстрации.

0

Способ, которым вы инициализируете данные, является неправильным, может выглядеть here для разных способов сделать это.

@ Ответ Gyrocode.com берет верх из того, что вы, вероятно, боретесь. Am просто дать вам еще один ответ, имею в виду, может быть, можно рассмотреть возможность получения данных и передачи его в таблицу данных

 $.getJSON("http://example/servlet_data.json", function(fromServer) { 

      $('#testTable').DataTable({ 
       data: fromServer.data, 
       columns: [ 
        { data: "tId" }, 
        { data: "description"}, 
        { data: "rst"}, 
        { data: "startDate"}, 
        { data: "endDate"} 
        ] 
      }); 

    }).fail(function(){ 
     alert("Error occurred getting data from the server"); 
    }) 

Happy кодирования

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