将CSV字符串从Javascript传递到PHP
问题描述:
我试图将我的DHTMLX网格导出为CSV文件。我有它设置的框架,但我正在运行一个问题,如果我尝试导出超过25行,它会失败。没有错误信息或任何东西。下面是我的代码:将CSV字符串从Javascript传递到PHP
的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的权利?)不处理这样一个巨大的网址。你应该添加一个参数,可以作为HTTP POST查询的参数:
$.post(
"data/export.php",
{
csvdata: gridCsvData
}
);
$.post(
"data/export.php",
{
csvdata: gridCsvData
}
);
作品非常感谢man..still无法让它提示用户保存该文件。任何想法,为什么不会弹出?它只是在不提示的情况下保存在服务器上。 – ad2387
你是否用'application/csv'代替'Content-type'中的'text/csv'? – j0k
是的,我在这两者之间来回走动。没有什么区别,我可以看到 – ad2387