Para aquellos que buscan un enfoque más moderno, puede usar el fetch API
. El siguiente ejemplo muestra cómo descargar un archivo de hoja de cálculo. Se hace fácilmente con el siguiente código.
fetch(url, {
body: JSON.stringify(data),
method: 'POST',
headers: {
'Content-Type': 'application/json; charset=utf-8'
},
})
.then(response => response.blob())
.then(response => {
const blob = new Blob([response], {type: 'application/application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'});
const downloadUrl = URL.createObjectURL(blob);
const a = document.createElement("a");
a.href = downloadUrl;
a.download = "file.xlsx";
document.body.appendChild(a);
a.click();
})
Creo que este enfoque es mucho más fácil de entender que otras XMLHttpRequest
soluciones. Además, tiene una sintaxis similar al jQuery
enfoque, sin la necesidad de agregar bibliotecas adicionales.
Por supuesto, le aconsejaría comprobar en qué navegador está desarrollando, ya que este nuevo enfoque no funcionará en IE. Puede encontrar la lista completa de compatibilidad del navegador en el siguiente enlace .
Importante : En este ejemplo, estoy enviando una solicitud JSON a un servidor que escucha el archivo url
. Esto url
debe establecerse, en mi ejemplo, supongo que conoce esta parte. Además, considere los encabezados necesarios para que su solicitud funcione. Como estoy enviando un JSON, debo agregar el Content-Type
encabezado y configurarlo application/json; charset=utf-8
para que el servidor sepa el tipo de solicitud que recibirá.