DHTMLXグリッドをcsvにエクスポートしていて、.CSVファイルを正常に作成できました。私が抱えている問題は、ファイルを保存/開くようにユーザーに促していないことです。JavaScriptからの$.post呼び出しを使用してCSV文字列をPHPに送信し、その文字列をcsvに書き込みます。何らかの理由で、ユーザーへのプロンプトは作成されていませんが、ファイルの書き込みとサーバーへの保存は正常に行われています。関連するコードは次のとおりです。
JS:
myGrid.csvParser = myGrid.csvExtParser;
myGrid.setCSVDelimiter('|');
myGrid.csv.row = "endOfRow";
var gridCsvData = myGrid.serializeToCSV();
$.post(
"data/export.php",
{
csvdata: gridCsvData
}
);
PHP(export.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: application/csv");
header("Content-Disposition: attachment; filename=grid.csv");
header("Pragma: no-cache");
header("Expires: 0");
このコードは、グリッドを希望どおりにエクスポートし、「grid.csv」に保存するという意味で完全に機能します。問題は、ファイルを保存するようにユーザーに促していないことです。これは私のPHPヘッダーの問題ですか、それとも成功を促すために$ .postに何かを入れる必要がありますか?助けてくれてありがとう!