Я пытаюсь заполнить DataTable информацией, собранной из API.Как добавить данные из API в HTML DataTable?
Я сделал «скрипку» здесь, чтобы сделать его проще, чтобы помочь и понять, что я имею в виду: http://live.datatables.net/jujofoye/3/edit
Я начинаю из HTML-таблицы, содержащей только идентификаторы. Затем я использую этот идентификатор в rowCallback для вызова API и писать сгружен значение в таблице с JQuery $('td:eq(1)', nRow).html(json.Title);
function customFnRowCallback(nRow, aData, iDisplayIndex) {
var imdbID = aData[0];
fetch("http://www.omdbapi.com/?i="+imdbID+"&plot=short&r=json&tomatoes=true")
.then(function(response) {
return response.json();
})
.then(function(json) {
$('td:eq(1)', nRow).html(json.Title);
})
.catch(function(error) {
console.log('There has been a problem with your fetch operation: ' + error.message);
});
}
Однако проблема здесь заключается в том, что вы не можете сортировать по второй колонке. Несмотря на то, что данные можно увидеть отлично. Я уверен, что DataTable действительно не знает, что есть новые данные, и вы в конечном итоге сортируете пустые значения вместо добавленных значений.
Второй эффект этой же проблемы (который не отображается в моей скрипке) заключается в том, что свернутые строки (строки должны сжиматься при недостаточной ширине) также отображаются пустым при расширении строки.
Третий эффект заключается в том, что поиск не работает с извлеченными данными.
Есть ли способ действительно добавить данные в DataTable? Это не косметически.
(Примечание. Все ответы можно найти около заселения полного DataTable с просьбой AJAX Я только добавить данные к уже населенной DataTable)
Любая конкретная причина, почему вы не получите данные первого затем построить таблицу как предложил Питер Чон или использовать Аякса, который является частью DataTable апи? – Bindrid
@Bindrid Да, rowCallback работает только для видимых данных. Так что даже если у вас миллион записей, вызовы api ограничены, так как вы можете видеть здесь, api работает только 10x: http://live.datatables.net/jujofoye/11/edit –
@Bindrid еще одна причина в том, что я не знаете, когда ответы api будут возвращены, прежде чем я смогу построить данные, это может занять много непредсказуемого времени. –