Datatables jQuery プラグインを使用しています。テーブルは、AJAX ソース (ASP.NET によって JSON オブジェクトに処理された SQL Server クエリ) からデータを取得しています。変更がリアルタイムで表示されるように、テーブルのライブ ビューを作成したいと考えています。しかし、数秒ごとにテーブル全体をリロードするのではなく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 ループが (1 回の反復後に) 早期に終了することです。最後にステートメントを追加すると、未定義console.log
であるというエラーが発生し始めました。newData[i].serial
これは、 newData 配列全体が破壊されたか何かだと思います...
ばかげた間違いを犯したことを本当に望んでいます(ただし、チェックしてチェックしてさらにチェックしましたが、見つけられませんでした)。たぶん、私が見落としているものがあります。誰かアドバイスがあれば、大歓迎です。