SkyRewir,
если уж так хочется (надо полагать, что пользователь знает, что его ждет, то есть скачивание файла), то после завершения POST запроса открыть либо новое окно, либо iframe, который запросит файл на скачивание. Если же в рамках ajax средствами JS сохранять на клиенте, то нужно учитывать, что файл, это BLOB. Если при этом вести диалог, а он необходим, чего у вас не наблюдается, то его тип данных иной.
<?
if($_POST) {
exit('Y');
}
if($_GET['f']) {
header("Content-Length: ".filesize('filename.ext'));
header("Content-Disposition: attachment; filename=filename.ext");
header("Content-type: type_file");
fpassthru(fopen('filename.ext', 'rb'));
exit;
}
?>
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script>
$(function() {
$('button').click(function(){
$.ajax({
url: location,
type: 'POST',
data: {dst: 1},
success: function(data){
if(data){
$('<iframe style="display:none" src="?f=1"/>').appendTo('body')
}
}
});
});
});
</script>
</head>
<body>
<button>GO</button>
</body>
</html>
Это пример работы с iframe.