作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
此外,正如您在底部看到的,我提供了一个 HTML 到 CSV 的下载按钮,但它仅提供页面上可见的 25 个条目的下载。我想向最终用户提供所有条目 (551,483) 的下载选项。我该怎么做?您可以在下面看到我使用的代码:
downloadCSV (csv, filename) {
var csvFile;
var downloadLink;
csvFile = new Blob([csv], {type: 'text/csv'});
downloadLink = document.createElement('a');
downloadLink.download = filename;
downloadLink.href = window.URL.createObjectURL(csvFile);
downloadLink.style.display = 'none';
document.body.appendChild(downloadLink);
downloadLink.click();
},
exportTableToCSV (filename) {
var csv = [];
var rows = document.querySelectorAll('table tr');
for (var i = 0; i < rows.length; i++) {
var row = [];
var cols = rows[i].querySelectorAll('td, th');
for (var j = 0; j < cols.length; j++) {
row.push(cols[j].innerText);
}
csv.push(row.join(','));
}
this.downloadCSV(csv.join('\n'), filename);
}
最佳答案
您的服务器向客户端发送 25 个项目,因此您的客户端只有 25 个项目。如果您不将所有项目发送到客户端,那么您将无法在不向服务器发送请求的情况下导出它们。因此,您有两个选择:
您可以将包含所有数据的 JSON 发送到客户端,但这似乎不是一个好主意,特别是当服务器必须将如此大的数据 block 发送给多个用户时同时(DDOS攻击将变得极其容易)。此外,加载页面可能会花费大量时间,不必要地让用户等待一段时间,并且用户不一定希望导出所有页面加载中的数据,这使得服务器所做的努力和用户体验牺牲了 self 。击败想法。
我认为更好的方法是在服务器端提供导出功能,并且您只需按需请求数据。这似乎是一个更明智的方法。
关于javascript - 如何为java脚本中的表的所有条目提供下载选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49633340/
我是一名优秀的程序员,十分优秀!