2015-05-28 2 views
0

Я пытаюсь построить datatable (1.10.7) на основе ввода javascript var, заполненного данными JSON. Хотя я успешно использовал datatables с источниками ajax, я никогда не пытался просто предоставить свою собственную переменную, но мне нужно в этом случае.Создание datatables из источника Javascript

Вот моя переменная:

json = [ 
{"dateReceived":"2015-01-01","designCustomer":"MULTITEST 1","designCustomerLocation":"SUNNYVALE, CA"}, 
{"dateReceived":"2016-04-05","designCustomer":"MULTITEST 2","designCustomerLocation":"SUNNYVALE, CA"}, 
{"dateReceived":"1982-04-18","designCustomer":"MULTITEST 3","designCustomerLocation":"SUNNYVALE, CA"} 
] 

Согласно DataTables' page on Javascript-Sourced Data,

This is achieved using the dataDT option in the initialisation object, passing in an array of data to be used (like all other DataTables handled data, this can be arrays or objects using the columns.dataDT option). 

Я запутался различиями в их испытательной колонны, и в шахте:

var dataSet = [ 
    ['Trident','Internet Explorer 4.0','Win 95+','4','X'], 
    ['Trident','Internet Explorer 5.0','Win 95+','5','C'], 
    ['Trident','Internet Explorer 5.5','Win 95+','5.5','A'], 
    ['Trident','Internet Explorer 6','Win 98+','6','A'], 
    ['Trident','Internet Explorer 7','Win XP SP2+','7','A'] 

именно , их тестовая переменная не содержит field names, а моя.

Вот код, который я написал, чтобы попытаться разобрать мою переменную json:

var table = $('#ltc-table').DataTable({  
    "data" : json,   
    "columns" : [ 
     { "title" : "designCustomer" }, 
     { "title" : "designCutomerLocation" }, 
     { "title" : "dateReceived" }, 
    ], 
    "lengthMenu": [ 25, 50, 101 ], 
    "oLanguage": { 
    "sSearch": "Filter Results: " 
    } 
}); 

Кажется, основанный на странице я связан выше, что я правильно делаю, но я Вместо этого возникают ошибки:

Uncaught Error: DataTables warning: table id=ltc-table - Requested unknown parameter '0' for row 0. 

Любые советы?

ответ

1

Если вы хотите использовать objects as data source вместо массивов, вам нужен связывать столбцов, используя columns.data опции:

json = [ 
{"dateReceived":"2015-01-01","designCustomer":"MULTITEST 1","designCustomerLocation":"SUNNYVALE, CA"}, 
{"dateReceived":"2016-04-05","designCustomer":"MULTITEST 2","designCustomerLocation":"SUNNYVALE, CA"}, 
{"dateReceived":"1982-04-18","designCustomer":"MULTITEST 3","designCustomerLocation":"SUNNYVALE, CA"} 
]; 

var table = $('#ltc-table').DataTable({  
    "data" : json,   
    "columns" : [ 
     { "data" : "designCustomer" }, 
     { "data" : "designCustomerLocation" }, 
     { "data" : "dateReceived" } 
    ], 
    "lengthMenu": [ 25, 50, 101 ], 
    "oLanguage": { 
    "sSearch": "Filter Results: " 
    } 
}); 

См demo

+0

Да это совершенно точное ... ваша скрипка работа в совершенстве. Интересно, почему я все еще получаю ошибки даже после изменения 'title' на' data'. Теперь я получаю сообщение об ошибке «Uncaught Error: DataTables: table id = ltc-table» - запрошенный неизвестный параметр «designCustomer» для строки 0.', но прямо над ним в моем «console.log» я отчетливо вижу «designCustomer»: "MULTITEST 1", ' –

+0

Возможно написание. Проверьте, что ваше правописание в 'columns.data' соответствует именам полей в json. – dreyescat

+0

Они отлично сочетаются. –