Tengo un botón y onclick
llamará a una función ajax.Descargar archivo a través de una llamada ajax php
Aquí es mi función ajax
function csv(){
ajaxRequest = ajax();//ajax() is function that has all the XML HTTP Requests
postdata = "data=" + document.getElementById("id").value;
ajaxRequest.onreadystatechange = function(){
var ajaxDisplay = document.getElementById('ajaxDiv');
if(ajaxRequest.readyState == 4 && ajaxRequest.status==200){
ajaxDisplay.innerHTML = ajaxRequest.responseText;
}
}
ajaxRequest.open("POST","csv.php",false);
ajaxRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
ajaxRequest.send(postdata);
}
puedo crear el archivo csv en base a la entrada del usuario. Después de su creación, quiero que solicite descargar o forzar la descarga (preferiblemente fuerza). Estoy usando la siguiente secuencia de comandos al final del archivo php para descargar el archivo. Si ejecuto este script en un archivo separado, funciona bien.
$fileName = 'file.csv';
$downloadFileName = 'newfile.csv';
if (file_exists($fileName)) {
header('Content-Description: File Transfer');
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename='.$downloadFileName);
ob_clean();
flush();
readfile($fileName);
exit;
}
echo "done";
Pero si lo ejecuto al final de csv.php da salida a los contenidos de la file.csv en la página (en el ajaxDiv) en lugar de la descarga.
¿Hay alguna manera de forzar la descarga del archivo al final de csv.php?
Creo que técnicamente es mejor establecer 'window.location'; vea esta discusión: http://stackoverflow.com/questions/7857878/window-location-vs-document-location – yitwail