Закрыть веб-страницу после отправки заголовков (php) - PullRequest
2 голосов
/ 22 апреля 2011

Я сейчас заканчиваю веб-страницу на php.

В основном на ней есть некоторые данные, которые необходимо преобразовать в файл Excel.Таким образом, после того, как Google немного нашел этот проект PHPExcel , он вычислил данные, используя его.Это прекрасно работает.

Теперь, когда происходит вывод указанных данных, я использую функцию javascript window.open(URL_OF_THE_MAKEOUTPUT.PHP_FILE_GOES_HERE), поэтому текущее окно, содержащее данные, не повреждено.Теперь я хотел бы закрыть это второе окно, когда файл Excel генерируется и начинает загружаться на клиентский компьютер.

Итак, до сих пор я знаю, что у меня есть проблема с этим небольшим фрагментом кода

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

Из-за этого я не могу сделать это afterwerds ->

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

Я попытался использовать

ob_start("callback");

в начале страницы и

ob_end_flush();

в конце, но все равно не повезло.

Есть идеи?

Tnx заранее !!!

Ответы [ 2 ]

3 голосов
/ 22 апреля 2011

Не используйте window.open, чтобы открыть всплывающее окно. Если вы называете свой URL в главном окне, и это загрузка (то есть, благодаря вашим header() вызовам), ваш браузер будет умным и оставит существующую страницу / данные в окне нетронутыми. Так что всплывающее окно не нужно.

2 голосов
/ 22 апреля 2011

То, что вы, вероятно, захотите сделать, это использовать вместо этого:

location.href = URL_OF_THE_MAKEOUTPUT.PHP_FILE_GOES_HERE;

Он будет перенаправлен на скрипт загрузки и, поскольку он является вложенным файлом, он не покинет текущую страницу, а вместо этого покажетДиалог загрузки файла из вашего браузера.

...