发送报头后关闭网页(php)


Close web page after sending headers (php)

我目前正在完成一个网页在php。

基本上有一些数据需要输出到Excel文件。谷歌一下后,我找到了这个PHPExcel项目,然后用它输出数据。很好。

现在,当上述数据输出发生时,我使用window.open(URL_OF_THE_MAKEOUTPUT.PHP_FILE_GOES_HERE) javascript函数,因此保存数据的当前窗口是完整的。现在,当excel文件生成并开始下载到客户端计算机时,我想关闭第二个窗口。

到目前为止,我知道这一小段代码有问题

header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename=report-'.date('d.m.Y').'.xls');

因此,我不能在后面执行->

echo "<script>window.close;</script>";

我试过使用

ob_start("callback");

在页首,

ob_end_flush();

在最后,但仍然没有运气。

任何想法?

提前通知!!

请勿使用window.open打开弹出窗口。如果你在主窗口调用你的URL,它是一个下载(这是由于你的header()调用),你的浏览器将是智能的,并在窗口中留下现有的页面/数据完好无损。所以不需要弹出窗口

你可能想做的是用这个代替:

location.href = URL_OF_THE_MAKEOUTPUT.PHP_FILE_GOES_HERE;

它将重定向到下载脚本,因为它是一个文件附件,它不会离开当前页面,而是显示一个从浏览器下载文件对话框。