我正在尝试将 DHTMLX 网格导出到 CSV 文件。我已经设置了框架,但遇到了一个问题:如果我尝试导出超过 25 行,则会失败。没有错误消息或任何东西。下面是我的代码:
Javascript
myGrid.csvParser = myGrid.csvExtParser;
myGrid.setCSVDelimiter('|');
myGrid.csv.row = "endOfRow";
var gridCsvData = myGrid.serializeToCSV();
$.post("data/export.php?csvdata="+gridCsvData);
PHP
$csvData = $_REQUEST['csvdata'];
$csv = explode('endOfRow',$csvData);
$myfile = "grid.csv";
$fh = fopen($myfile, 'w') or die("can't open file");
foreach($csv as $line) {
fputcsv($fh, explode('|',$line),',','"');
}
fclose($fh);
//Redirect output to a client's web browser (csv)
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=grid.csv");
header("Pragma: no-cache");
header("Expires: 0");
readfile('grid.csv');
感谢任何帮助。我认为这是 POST 上的某种大小限制问题,我尝试将 .htaccess 文件中的限制修改为 20MB。正如我所说,这仅适用于几行 (<25),但一旦我尝试导出更多行,它就永远不会生成 .csv 文件。
最佳答案
我猜 $.post
(来自 jQuery,对吗?)不能处理这么大的 url。您应该添加一个可以作为 HTTP POST 查询参数处理的参数:
$.post(
"data/export.php",
{
csvdata: gridCsvData
}
);
关于php - 将 CSV 字符串从 Javascript 传递到 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12094147/