我正在尝试使用一个用户可以单击下载文件的按钮,但该文件可能不存在,因为它是其他文件的压缩文件,必须生成。我正在使用AJAX进行检查,但是一旦我收到正确的URL,我就不知道如何让用户下载它。
window.open(link, '_blank');
尝试打开窗口下载文件,但大多数浏览器会阻止此操作并将其视为弹出窗口。让用户下载这样的文件的最佳做法是什么?感谢。
这是我用来参考的JS函数:
function getDownloadedFiles() {
var INTERVAL_TIME = 3000,
$projectView = $('#project-view'),
id = $projectView.data("project-id");
$.ajax({
type: "GET",
url: AJAX_URL + id,
success: function(data) {
if (data.success) {
var link = data.profiler.link;
window.open(link, '_blank');
} else {
setTimeout(getDownloadedFiles, INTERVAL_TIME);
}
}
});
}
答案 0 :(得分:-1)
也许你可以使用隐藏的iframe。试试这个:
var downloadURL = function downloadURL(url) {
var hiddenIFrameID = 'hiddenDownloader',
iframe = document.getElementById(hiddenIFrameID);
if (iframe === null) {
iframe = document.createElement('iframe');
iframe.id = hiddenIFrameID;
iframe.style.display = 'none';
document.body.appendChild(iframe);
}
iframe.src = url;
};
的无耻撕裂
答案 1 :(得分:-1)
最后,正确的解决方案是Download File Using Javascript/jQuery,我使用了错误的网址。
我将链接设置为data.profiler.link,当它真的是data.data.link并且让自己感到困惑时。
这是我的最终代码:
function getDownloadedFiles() {
var INTERVAL_TIME = 3000,
$projectView = $('#project-view'),
id = $projectView.data("project-id");
$.ajax({
type: "GET",
url: AJAX_URL + id,
success: function(data) {
if (data.success) {
var link = data.data.link,
hiddenIFrameID = 'hiddenDownloader',
iframe = document.getElementById(hiddenIFrameID);
if (iframe === null) {
iframe = document.createElement('iframe');
iframe.id = hiddenIFrameID;
iframe.style.display = 'none';
document.body.appendChild(iframe);
}
iframe.src = link;
} else {
setTimeout(getDownloadedFiles, INTERVAL_TIME);
}
}
});
}