Для тех, кто ищет более современный подход, вы можете использовать fetch API
. В следующем примере показано, как загрузить файл электронной таблицы. Это легко сделать с помощью следующего кода.
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();
})
Я считаю, что этот подход намного легче понять, чем другие XMLHttpRequest
решения. Кроме того, он имеет синтаксис, аналогичный jQuery
подходу, без необходимости добавлять какие-либо дополнительные библиотеки.
Конечно, я бы посоветовал проверить, для какого браузера вы разрабатываете, поскольку этот новый подход не будет работать в IE. Вы можете найти полный список совместимых браузеров по следующей ссылке .
Важно : в этом примере я отправляю запрос JSON на сервер, который прослушивает данный url
. Это url
должно быть установлено, на моем примере я предполагаю, что вы знаете эту часть. Также обратите внимание на заголовки, необходимые для работы вашего запроса. Поскольку я отправляю JSON, я должен добавить Content-Type
заголовок и установить его application/json; charset=utf-8
, чтобы сервер знал, какой тип запроса он получит.