Dla tych, którzy szukają bardziej nowoczesnego podejścia, możesz użyć fetch API
. Poniższy przykład pokazuje, jak pobrać plik arkusza kalkulacyjnego. Można to łatwo zrobić za pomocą następującego kodu.
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();
})
Uważam, że to podejście jest dużo łatwiejsze do zrozumienia niż inne XMLHttpRequest
rozwiązania. Ma również podobną składnię do jQuery
podejścia, bez konieczności dodawania jakichkolwiek dodatkowych bibliotek.
Oczywiście radziłbym sprawdzić, którą przeglądarkę tworzysz, ponieważ to nowe podejście nie będzie działać w IE. Pełną listę zgodności przeglądarek można znaleźć pod poniższym linkiem .
Ważne : W tym przykładzie wysyłam żądanie JSON do serwera nasłuchującego na podanym url
. To url
musi być ustawione, na moim przykładzie zakładam, że znasz tę część. Weź również pod uwagę nagłówki potrzebne do działania żądania. Ponieważ wysyłam JSON, muszę dodać Content-Type
nagłówek i ustawić go na application/json; charset=utf-8
, aby poinformować serwer o typie żądania, które otrzyma.