Baixe um arquivo construído no buffer de saída do PHP a partir da chamada AJAX

Eu estou tentando construir um arquivo CSV em PHP, em seguida, chamar o arquivo PHP de uma chamada AJAX, que, em seguida, iniciará um download do arquivo CSV após o sucesso da chamada AJAX. Isso funciona bem se eu salvar uma cópia física do .csv no servidor, mas gostaria de usarphp://ouput então eu não tenho que me preocupar com arquivos físicos entupindo o servidor. É possível iniciar um download de retornarphp://output para AJAX? Aqui está o meu código:

HTML / jquery:

<!DOCTYPE html>

<html lang="en">
    <head>
        <meta charset="utf-8" />
        <script type="text/javascript" language="javascript" src="jquery.js"></script>
        <script type="text/javascript">
             $("#download").live("click", function() {
                var request = $.ajax({
                    dataType: 'html',
                    url: 'php.php',
                    success: function(response) {
                        alert('Finished');
                    }
                })
            })
        </script>
    </head>
    <body>
        <h1 id="download">DOWNLOAD</h1>
    </body>
</html>

PHP:

<?php 
    header('Content-type: application/vnd.ms-excel');
    header('Content-disposition: attachment; filename="test.csv"');
    $f = fopen('php://output', 'w');
    fwrite($f,'this,is,a,test');
    fclose($f);
    readfile('php://output');
    return;
?>

Não sei como obter isso para retornar uma caixa de diálogo Salvar Arquivo da minha chamada AJAX.

Isso tem que ser simples, mas não consigo encontrar nenhum exemplo que combine esses dois problemas.