Content-Disposition: attachment и пустое окно

Poltoraki

Новичок
Content-Disposition: attachment и пустое окно

Результаты запроса из БД выводятся в новое окно в виде таблицы или предлагается сформировать csv файл и его сгрузить. С таблицей проблем нет, csv файл тоже формируется и сгружается (Content-Disposition: attachment), но раздражает один момент. При запросе cvs файла сначала открывается пустое окно, потом появляется приглашение сохранить файл, когда файл сгружен, то пустое окно остается открытым и его надо закрывать руками. Вопрос: как закрыть это пустое окно или еще лучше как избежать его открытия?
 

Poltoraki

Новичок
Вот код который вызывается когда нужен csv file:
<?php
$dbcnx = mysql_connect .....;
$db = mysql_select_db .....;
$result = mysql_query(............;
$filename = ..............;
header("Content-Type: text/csv");
header("Content-Disposition: attachment; filename=$filename");
while ($row = mysql_fetch_row($result))
{
$count_row = count($row);
for ($i = 0; $i < $count_row; $i++)
{
.....
echo $row[$i];
.....
}
}
?>
И куда здесь JavaScript вставлять?
 

Poltoraki

Новичок
echo .... и т.д.?
тогда это все просто запишется в формируемый файл.
 

Poltoraki

Новичок
там его нет. вышеприведенный скрипт вызывается:
<form name="FormOne" method="POST" action="results.php?page=0" onSubmit="return Check()">
 

SelenIT

IT-лунатик :)
А откуда, в таком случае, берется новое окно в случае вывода таблицы? Из ф-ции Check()?
 

Poltoraki

Новичок
Нет, окно открывется по вызову action="results.php?page=0", дальше в results.php стоит switch, который проверяет какую форму вывода (таблицу или csv файл) запросили. Если таблица, то выводит ее, если файл, то исполняется кусок кода который я привел. Тут, я наверное вспылил, не открывать окно совсем не получится, оно автоматически по вызову action="results.php?page=0" будет всегда открываться. Хоть закрыть бы его как-то после того как файл сгружен.
 

SelenIT

IT-лунатик :)
Не должно окно открываться само по себе только "по action". Наверняка где-то в JavaScript-е либо динамически переопределяется target формы, либо вызывается window.open...
 

Poltoraki

Новичок
Елки, конечно есть target="_blank", это я что-то дико тормознул, сорри. Т.е. отделаться от него никак не получится, таблица должна в новом окне выводится. А как закрыть, если перед header("Content-Disposition:....) ничего не выведешь?
 

SelenIT

IT-лунатик :)
Можно попробовать динамически добавлять "this.target = '_blank'" в onsubmit формы только в том случае, когда он действительно нужен...
 

Poltoraki

Новичок
SelenIT
огромное спасибо, за подсказку!
document.FormOne.removeAttribute("target") и все замечательно работает! Спасибо!!!
 
Сверху