Teraz robię taką głupawkę, że po naciśnięciu przycisku najpierw idzie Ajax gdzie na podstawie parametrów tworzę plik na serwerze, a potem idzie normalny request gdzie w odpowiedzi zapisuję plik na dysku usera. Wolałbym to robić tylko ajaxem.
teraz jest tak:
if (//wchodzi ajax){
//wygeneruj plik i zapisz nazwę w sesji
}
if(//wchodzi zwykły request){
//odbierz z sesji nazwę pliku i ...
header('Content-Description: File Transfer'); header("Content-type: text/csv; charset=utf-8"); header('Content-Disposition: attachment; filename=' . basename($exportedFile)); header('Content-Transfer-Encoding: binary'); header('Cache-Control: must-revalidate'); }
i wcześniej ajax
<a href="?action=exp" id="export"> <script type="text/javascript"> $("#export").click(function () {
$.ajax({
url: "../admin/shop.php",
data: {
action: 'exp',
tableParams: tableParams
}
})
});
Problem polega na tym, że zdarza się że szybszy jest request "zwykły" a potem idzie ajax. Mogłoby tak zostać ale musiałbym jakoś zmusić by najpierw szedł ajax a po nim zwykły request. Muszę to robić ajaxem bo dane na podstawie którym mam wygenerować plik są widoczne tylko przez javascript