我有一个在我的后端生成的csv文件,API要求我执行POST来触发文件的生成。这有点问题。幸运的是,我偶然发现了一些混合方法,这些方法似乎是少数人用于此类事情的一般方法。不幸的是,我似乎并不适用于Firefox,也许还有其他浏览器。我知道它在Chrome中运行得很完美,但我想知道它的Chrome是否可以使用,或者它是否因为某些原因而无法在Firefox中运行。下面是我到目前为止的代码,我手动修改了几个变量,试图在这里理解它们。但任何人都有任何想法?这是不能做的事情吗?
$.ajax({
url: '/api?id=' + post_file_id,
"async": true,
"crossDomain": true,
"method": "GET",
"headers": {
"cache-control": "no-cache",
},
"processData": false,
}).done((response) => {
let a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
let blob = new Blob([response], {type: "text/csv;charset=utf-8;"});
let url = window.URL.createObjectURL(blob);
a.href = url;
a.download = 'download-' + post_file_.replace(' ', '_') + '.csv';
a.click();
window.URL.revokeObjectURL(url);
//document.body.removeChild(a);
}).fail(() => {
this._showStatusAlertBox('error', 'There is no data for post.');
});
}
答案 0 :(得分:0)
也许你需要一些延迟。试试:
a.click();
setTimeout(function(){
document.body.removeChild(a);
window.URL.revokeObjectURL(url);
}, 100);