我有一个我要调用的API端点。这似乎是一件容易的事,但令我惊讶的是,它并非如此。这就是原因:
现在我被卡住了。还有什么我可以尝试的吗?
答案 0 :(得分:2)
你可以用ajax或raw XMLHttpRequest()
来做到这一点在你的问题的提交中已经提到的一些事情可以解释这里发生了什么。
首先,您需要一个请求对象。发布是没有问题的,您将传递您必须在那最后一行发送的JSON有效负载。 POST成功后,您需要获取返回的二进制文件并为正确的文件类型创建一个Blob,一个objecctUrl,最后是一个您为用户单击的隐藏链接。请注意下载属性。这让现代浏览器知道它是下载链接,它允许下载滚动。
我可能从stackoverflow获得了一些代码......
const xlsx = {};
const xhr = new XMLHttpRequest();
xhr.open('POST', '/data/some.ashx');
xhr.responseType = 'blob';
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.onload = function loadXLXS() {
let objectUrl;
if (this.status === 200) {
blob = this.response
csvURL = window.URL.createObjectURL(blob);
tempLink = document.createElement('a');
tempLink.href = csvURL;
tempLink.setAttribute('download', workBookName);
tempLink.click();
}
};
xhr.send(JSON.stringify(xlsx));