jQuery DataTables循环引用错误

jQuery DataTables cyclic reference error

我正在使用 jQuery DataTables,后面有 VB 代码。我正在尝试编写自定义 Excel 导出,因为内置的 Excel 导出功能不适用于大型数据集。

另外,我想导出搜索框里过滤掉的行。

JS:

excelExport: function () {
            var table = $('#myTable').DataTable();

            //filtered rows data as arrays
            var filteredData = table.rows({ filter: 'applied' }).data();

            PageMethods.ExcelExport(filteredData);               
        }

filteredData 输出到控制台:

[ Array[20], Array[20], Array[20],...] 

这似乎是我可以使用的东西。当我尝试使用 PageMethods 将对象传回服务器端时,我得到了这个可怕的错误:

Uncaught Error: Sys.InvalidOperationException: Cannot serialize object with cyclic reference within child properties.

然后我尝试通过 JSON.stringify 传递 filteredData 并得到类似的错误:

Uncaught TypeError: Converting circular structure to JSON

有没有人遇到过这个问题或者对如何解决这个问题有任何想法?到目前为止,我的研究还没有提出解决方案。

或者是否有更好的方法来处理这些 jQuery DataTables 的导出,以处理更大的数据集?

我明白我的问题是什么了。根据 Bindrid 的评论,我将查询简化为一列 id 以检验他的理论。我仍然遇到循环引用错误。然后我开始剥离额外的 jQuery datatables 函数。

我的 table 定义大致如下。

 table = $('#myTable').dataTable({

                    "bSortClasses": false,
                    "ajax": {
                        "type": "POST",
                        "url": "/page.aspx/FillTable",
                        "data": {},
                        "contentType": "application/json; charset=utf-8",
                        "dataSrc": "d",                        
                        "error": function (result) {
                            // write the error to the console otherwise.
                            console.log(result.responseJSON.Message + "\n\r\n\r" + result.responseJSON.StackTrace);
                        }
                    },
                    "dom": "<'row'<'col-md-3'l><'col-md-6'><'col-md-3'f>>" +
                                "<'row'<'col-md-12't>>" +
                                "<'row'<'col-md-6'i><'col-md-6'p>>",      
                    },
                    "order": [[2, "asc"]],                   
                    "columnDefs": [
                    {
                        "targets": [1],
                        "title": "unique",
                        "visible": false,
                        "searchable": false                    
                    }],
                    scrollX: true,
                    scrollCollapse: true,                    
                    fixedColumns: {
                        leftColumns: 3
                    },
                    iDisplayLength: 10,
                    initComplete: function (settings, json) {
                        console.log('DataTable has finished initialization.');                       
                    }
                });
            }

fixedColumns: { leftColumns: 3 }, 是导致原始 post 的导出函数出现循环错误的原因。删除这些行后,导出将数据无误地传递给后面的代码。

我希望这对以后的人有所帮助。