我正在使用 Datatables jQuery 插件。该表从 AJAX 源(SQL Server 查询,由 ASP.NET 处理到 JSON 对象)中提取数据。我想创建表格的实时视图,以便实时显示更改。但是,我不是每隔几秒钟就重新加载整个表fnReloadAjax()
(根据经验,这对浏览器来说是相当繁重的),我只更新新的或修改的记录,使用fnAddData()
and 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 数组被破坏了或者什么......
我真的希望我只是犯了一个愚蠢的错误(尽管我已经检查了又检查了一些,但找不到一个)。也许有些东西我忽略了。如果有人有任何建议,将不胜感激。