【发布时间】:2013-11-06 17:49:20
【问题描述】:
我正在尝试创建一个数据分析门户,它允许我将我的一个表导出为 CSV。我现在遇到的问题是,当用户选择大量数据时,它会失败,因为它已达到浏览器可用的 Javascript 变量的最大堆栈大小。 (正如here 所解释的那样)。解决方案是将它们拆分为更小的 Javascript 数组块,然后再将它们连接起来。
我的问题
我有一个很大的 PHP 数组(大小可变,因为我不知道用户选择的范围),我需要将它们拆分为可变数量的 Javascript 数组,然后再将它们连接起来。我怎样才能做到这一点?
我的代码目前看起来像这样
<?php
$array2 = getAllRawData($startDate, $endDate, $merchantID);
array_unshift($array2, ...TO ADD HEADER TO CSV....));
?>
// I am thinking some magic is supposed to happen here that splits my PHP array into smaller parts, assign them to javascript arrays and then concatenate them together into items2.
var items2 = <?php echo json_encode($array2);?>; // this is what I currently do but fails when the date range gets too wide.
var jsonObject2 = JSON.stringify(items2);
var csv2 = ConvertToCSV(jsonObject2);
a=document.createElement('a');
a.textContent='Download Raw Waiting Time Report';
a.download="RawWaitTime.csv";
a.href='data:text/csv;charset=utf-8,'+escape(csv2);
document.body.appendChild(a);
【问题讨论】:
-
你为什么要经历这一切?您不能直接从服务器提供 CSV 文件作为下载文件吗?
-
同意 Mike W。通常当你将 PHP 代码混合到 Javascript 代码中时,你会过度复杂化。
-
嗯,我从来没有想过,也许我会尝试一下。任何有关这方面的建议或指示将不胜感激!
-
我找到了一些说明使用
fputcsv的资源,但恐怕我没有准备好访问我的服务器以允许PHP 写入文件的权限。有什么解决办法吗? -
@user1258600 如何上传PHP文件?
标签: javascript php arrays