Preguntar al usuario para guardar el archivo a través de la llamada AJAX

Estoy exportando mi grilla DHTMLX a csv y he podido crear con éxito el archivo .CSV. El problema que tengo es que no está pidiendo al usuario que guarde / abra el archivo. Estoy usando una llamada de $ .post desde javascript para enviar la cadena CSV a PHP, luego escribo esa cadena en csv. Por alguna razón, no está creando una solicitud para el usuario, pero está escribiendo correctamente el archivo y guardándolo en el servidor. A continuación se muestra el código correspondiente:

JS:

myGrid.csvParser = myGrid.csvExtParser;
myGrid.setCSVDelimiter('|');
myGrid.csv.row = "endOfRow";           
var gridCsvData = myGrid.serializeToCSV();

    $.post(
        "data/export.php", 
        { 
           csvdata: gridCsvData
        }
    );

PHP (export.php):

$csvData = $_REQUEST['csvdata'];

$csv = explode('endOfRow',$csvData);

$myfile = "grid.csv";

$fh = fopen($myfile, 'w') or die("can't open file");

foreach($csv as $line) {
    fputcsv($fh, explode('|',$line),',','"');
}

fclose($fh);

//Redirect output to a client's web browser (csv)
header("Content-type: application/csv");
header("Content-Disposition: attachment; filename=grid.csv");
header("Pragma: no-cache");
header("Expires: 0");

Este código funciona perfectamente en el sentido de que exporta el Grid exactamente como lo quiero y lo guarda en 'grid.csv'. El problema es que no le está pidiendo al usuario que guarde el archivo. ¿Es este un problema con mis encabezados de PHP o necesito poner algo en el $ .post para que tenga éxito? ¡Gracias por cualquier ayuda!

Respuestas a la pregunta(2)

Su respuesta a la pregunta