Это работает, но только в случае, когда приведенные Вами коды размещены на файле, не участвующем в обработке данных из Аякс. Вот так:
<?php
$myCsvFile = "Вова;Петя";
header("Content-Description: File Transfer\r\n");
header("Pragma: public\r\n");
header("Expires: 0\r\n");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0\r\n");
header("Cache-Control: public\r\n");
header("Content-Type: text/plain; charset=UTF-8\r\n");
header("Content-Disposition: attachment; filename=\"myfile.csv\"\r\n");
echo $myCsvFile;
exit;
А в реальном файле SERVER получается вот что:
<?php
if ($module == "export")
{
$gruppa = $_POST['gruppa'];
$myfile = $_POST['file_export'];
$myCsvFile = "Вова;Петя";
header("Content-Description: File Transfer\r\n");
header("Pragma: public\r\n");
header("Expires: 0\r\n");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0\r\n");
header("Cache-Control: public\r\n");
header("Content-Type: text/plain; charset=UTF-8\r\n");
header("Content-Disposition: attachment; filename=\"$myfile.csv\"\r\n");
echo $myCsvFile;
exit;
$success_href = (empty($_POST['success_href'])) ? 'server.php' : $_POST['success_href'];
echo '<script id="success">location.href="'.$success_href.'";</script>';
}
Естесственно, что в результате просто выводится "Вова Петя". Если же закомментировать exit, то форма просто закрывается и никакого вывода тоже нет.