Как загрузить локальную переменную JSON с помощью JQuery Datatable - PullRequest
18 голосов
/ 04 октября 2011

У меня есть локальный набор данных JSON. Я хочу использовать jquery datatable плагин для его отображения. Есть ли какие-либо настройки или конфигурации внутри подключаемого модуля для отображения данных? Все, что я могу найти, это совершать AJAX-звонки и звонки на сервер.

Спасибо за помощь.

Ответы [ 5 ]

18 голосов
/ 04 октября 2011

Вы можете предоставить DataTables данными 4 различными способами

В вашей ситуации вы захотите использовать второй вариант (Javascript Array).Вам нужно будет иметь возможность преобразовать форму вашего объекта JSON в массив объектов.

Вот пример

var json = {
  BrowserStats : [
    { engine: "Trident", browser: "IE 4.0", platform: "Win 95+", version: 4 },
    { engine: "Trident", browser: "IE 5.0", platform: "Win 95+", version: 5 },
    { engine: "Trident", browser: "IE 5.5", platform: "Win 95+", version: 5.5 }
  ]
};

var data = jQuery.map(json.BrowserStats, function(el, i) {
  return new [el.engine, el.browser, el.platform, el.version];
});

$('#example').dataTable( {
  "aaData": data,
  "aoColumns": [
    { "sTitle": "Engine" },
    { "sTitle": "Browser" },
    { "sTitle": "Platform" },
    { "sTitle": "Version"}
  ]
});
1 голос
/ 21 декабря 2016

Решение проблемы с jessegavin ответом :

$(document).ready(function (){

var json = {
  BrowserStats : [
    { engine: "Trident", browser: "IE 4.0", platform: "Win 95+", version: 4 },
    { engine: "Trident", browser: "IE 5.0", platform: "Win 95+", version: 5 },
    { engine: "Trident", browser: "IE 5.5", platform: "Win 95+", version: 5.5 }
  ]
};

var data = jQuery.map(json.BrowserStats, function(el, i) {
  return [[el.engine, el.browser, el.platform, el.version]];
});

$('#example').dataTable( {
  "aaData": data,
  "aoColumns": [
    { "sTitle": "Engine" },
    { "sTitle": "Browser" },
    { "sTitle": "Platform" },
    { "sTitle": "Version"}
  ]
 });
});

https://jsfiddle.net/byejn8ye/

1 голос
/ 04 октября 2011

Вы можете установить параметр AjaxSource, который указывает на ваш DataSet:

$('#example').dataTable( {
    "sAjaxSource": 'dataset.json'
} );

Это загрузит все данные один раз и поместит их в DataTable.Подробнее о http://www.datatables.net/examples/data_sources/ajax.html.

Jovan

0 голосов
/ 14 июля 2016

Используйте параметр data для предоставления данных для таблицы.

Например:

var table_data = [
    [ "Tiger Nixon", "System Architect", "$3,120", "2011/04/25", "Edinburgh", 5421 ],
    [ "Garrett Winters", "Director", "$8,422", "2011/07/25", "Edinburgh", 8422 ]
];

$('#example').DataTable( {
    data: table_data
} );

Если ваши данные представляют собой строку в формате JSON, выможет потребоваться сначала разобрать его с помощью $.parseJSON() или JSON.parse().

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

0 голосов
/ 04 октября 2011

Вы можете получить локальный файл json, выполняя обычный ajax-вызов, с некоторыми оговорками (см. http://en.wikipedia.org/wiki/Same_origin_policy, или .getJSON jQuery, использующий локальные файлы, которые перестали работать в Firefox 3.6.13 , fwiw)

Но это определенно должно быть возможно сделать:

$.getJSON('page.json', function(data) {
    /* do something with each item in data */
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...