我正在尝试创建一个数据分析门户,该门户允许我将其中一个表导出为CSV。我现在遇到的问题是,当用户选择大量数据时,它会失败,因为它已经达到了我的浏览器可用的Javascript变量的最大堆栈大小。 (如解释here)。解决方案是将它们分成更小的Javascript数组块,然后再将它们连接起来。将大的PHP数组分割为更小的块用于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文件作为下载吗? – 2013-10-28 03:15:44
同意Mike W.通常,当您将PHP代码混合到Javascript代码中时,您会过度复杂化某些内容。 – teynon
嗯,我从来没有想到,也许我会试一试。任何意见或指针,将非常感激! – chongzixin