1

我正在使用 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 数组被破坏了或者什么......

我真的希望我只是犯了一个愚蠢的错误(尽管我已经检查了又检查了一些,但找不到一个)。也许有些东西我忽略了。如果有人有任何建议,将不胜感激。

4

1 回答 1

1

信用归@elclarnrs 提供解决方案,在上面的评论中发布。解决方案是声明函数的值iii函数的范围。这让一切顺利进行。很高兴知道以供将来参考。

于 2012-03-06T11:46:48.093 回答