【发布时间】:2019-01-09 08:49:35
【问题描述】:
生成和触发下载对话框的方法不正确。无法从后台进程(AJAX 调用)启动对话框(下载)
我正在尝试在单击按钮时创建/下载 CSV 文件。当我只是尝试创建 CSV 时,代码可以正常工作,如下所示:
Drupal 按钮:
$form['Export'] = array(
'#type' => 'submit',
'#value' => t('Export'),
"#ajax" => array(
"callback" => "export_csv",
),
处理代码:
$out = fopen('filename.csv', 'w');
//processing to create file csv
fputcsv($out, $info, ";");
fclose($out);
创建 csv 文件并将其存储在根目录中。
但是,当我尝试添加标头时,下面的代码失败,出现 ajax 错误并且没有调试信息
$fichier = 'inscriptions.csv';
header( "Content-Type: text/csv;charset=utf-8" );
header( "Content-Disposition: attachment;filename=\"$fichier\"" );
header("Pragma: no-cache");
header("Expires: 0");
$out = fopen('php://output', 'w');
//processing to create file csv
fputcsv($out, $info, ";");
fclose($out);
【问题讨论】:
-
您不能从 background 请求触发下载对话框。