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 的导出函数出现循环错误的原因。删除这些行后,导出将数据无误地传递给后面的代码。
我希望这对以后的人有所帮助。
我正在使用 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 的导出函数出现循环错误的原因。删除这些行后,导出将数据无误地传递给后面的代码。
我希望这对以后的人有所帮助。