Я использую плагин Datatables jQuery.Таблица извлекает данные из источника AJAX (запрос SQL Server, обработанный ASP.NET в объект JSON).Я хочу создать живое представление таблицы, чтобы изменения отображались в реальном времени.Но вместо того, чтобы перезагружать всю таблицу каждые несколько секунд с помощью fnReloadAjax()
(что, как показывает опыт, оказалось довольно обременительным для браузера), я обновляю только новые или измененные записи, используя fnAddData()
и fnUpdate()
.
После получения объекта JSON только из новых или измененных записей, вот мой код для обработки объекта.
var newData = updatedDataJSON.aaData;
if (newData[0] != null) {
for (i = 0; i < newData.length; i++) { //Loop through each object
if (newData[i].bNewCase === true) { //Process new cases
oTable.fnAddData(newData[i]);
} else { //Process modified cases
var tableArray = oTable.fnGetData();
var index;
var found = false;
var serial = newData[i].serial;
var dataObject = newData[i];
//First gotta find the index in the main table for
// the record that has been modified. This is done
// by matching the serial number of the newData
// object to the original aData set:
for (ii = 0; ii < tableArray.length; ii++) {
var value = tableArray[ii]['serial'];
value = value.replace(/<\/?[^>]+(>|$)/g, "");
if (value === serial) {
index = ii;
found = true;
}
}
if (found) {
oTable.fnUpdate(dataObject, index);
console.log('Updated ' + newData[i].serial);
}
}
}
}
Моя проблема в том, что, хотя свойство newData.length
первого цикла for может быть больше 1, цикл for завершается рано (после одной итерации).В конце я добавил оператор console.log
, и он начал передавать ошибки о том, что newData[i].serial
не определен.Это заставляет меня думать, что весь массив newData был уничтожен или что-то в этом роде ...
Я действительно надеюсь, что только что допустил глупую ошибку (хотя я проверял и проверял и проверял еще несколько, но могуне найти один).Может быть, я что-то упускаю из виду.Если у кого-нибудь есть какой-либо совет, он будет очень признателен.