2015-03-06 4 views
3

Я пытаюсь построить мой DataTable (1.10.5), используя AJAX вызов службы - http://www.datatables.net/examples/ajax/DataTable Ошибка - Не удается прочитать свойство 'длина' неопределенной

Вот мой Javascript:

$('#tableexample').DataTable({ 

    "dom": 'C<"clear">lfrtip', 
    "bProcessing": true, 
    "bServerSide": true, 
    "sAjaxSource": "../../api/EventTypes/GetAll", 
    "aoColumnDefs": [ 
     { 
      "aTargets": [0], 
      "mData": "Id" 
     }, 
     { 
      "aTargets": [1], 
      "mData": "Name" 
     }, 
     { 
      "aTargets": [2], 
      "mData": "Name" 
     }, 
     { 
      "aTargets": [3], 
      "mData": "Name" 
     }, 
     { 
      "aTargets": [4], 
      "mData": "Name" 
     } 
    ] 
}); 

Вот мой HTML:

<table id="tableexample" class="table table-striped dataTable table-hover"> 
         <thead> 
          <tr> 
           <th>Select</th> 
           <th>Event</th> 
           <th>Primary Category</th> 
           <th>Secondary Category</th> 
           <th>Workflow</th> 
          </tr> 
         </thead> 
        </table> 

Вот моя ошибка:

Uncaught TypeError: Cannot read property 'length' of undefined 

Если я смотрю я у jquery.dataTables.js - это говорит о том, что мои данные не определен ...

var data = _fnAjaxDataSrc(settings, json); 

Может кто-нибудь помочь мне с установкой мое AJAX вызова правильно динамически строить свою таблицу ??

Спасибо!

+0

Какой серверный язык вы используете? '' sAjaxSource ":" ../../ api/EventTypes/GetAll "' не выглядит как файл 'php' или' asp'. Может быть, он просто ничего не возвращает, потому что он не может связаться с серверным скриптом. – Sablefoste

+0

Это вызов API для получения ответа от базы данных. Мой ответ выглядит следующим образом: [ { "Id": 1, "Имя": "ликвидация скважин Поступая Примечания" }, { "Id": 2, "Имя": "Противная Закрыто" }, { "Id": 3, "Имя": "состязательности Уволен" }, { "Id": 4, "Имя": "состязательности Поданный" }] –

+0

Вы надеваете» t есть ''. Это может быть то, что «неопределено». – Sablefoste

ответ

2

Наконец-то нашел это!

мне нужно сделать вызов AJAX и передать данные «aaData»:

$.ajax({ 
    url: '/Portal/api/EventTypes/GetEventWorkflowDefinitions', 
    type: 'GET', 
    dataType: 'json', 
    success: function (data) { 
     assignToEventsColumns(data); 
    } 
}); 

function assignToEventsColumns(data) { 
var table = $('#tableexample').dataTable({ 
    "dom": 'C<"clear">lfrtip', 
    "bAutoWidth": false, 
    "aaData": data, 
    "aaSorting": [], 
    "aoColumnDefs": [ 
     { 
      "aTargets": [0], 
      "bSearchable": false, 
      "bSortable": false, 
      "bSort": false, 
      "mData": "EventTypeId", 
      "mRender": function (event) { 
       return '<input class="childCheck" type="checkbox" id="childCheckBoxes" value="' + event + '">'; 
      } 
     }, 
     { 
      "aTargets": [1], 
      "mData": "EventType" 
     } 

После того, как я это сделал ... таблица строить отлично!

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