在Ajax调用之后如何在JQuery中打开文件下载对话框?

时间:2016-05-26 05:49:51

标签: jquery ajax

使用IE-10/11

我正在使用JQuery下载文件

Common.ajax({
    dataType: 'text',
    type: 'GET',
    url: link,
    data: {'_CONV_ID': convId},
    success: function (data) {
        alert("File DOwnloaded" + data);
       //How to say Browser to open dialog to open, save cancel the file download
    },
    error: function (result) {
        $.unblockUI();
        $.log(result.responseText);
    }
});

警报消息已成功显示在屏幕上,但不显示保存或打开文件的对话框。有人建议成功写什么来获得它?

2 个答案:

答案 0 :(得分:1)

试试这个..

var a = document.createElement('a');
var fileurl=  window.URL.createObjectURL(new Blob([byteArray], { type: 'application/octet-stream' }));
a.href =  fileurl;
a.download = filename; // Set the file name.
a.style.display = 'none';
document.body.appendChild(a);
a.click();
delete a;
window.URL.revokeObjectURL(fileurl);

byteArray应来自您的数据

答案 1 :(得分:0)

Bluish对此完全正确,你不能通过Ajax来实现,因为JavaScript无法将文件直接保存到用户的计算机上(出于安全考虑)。不幸的是,将主窗口的 URL指向您的文件下载意味着您​​几乎无法控制文件下载时的用户体验。

我创建了jQuery File Download,它允许使用OnSuccess和OnFailure回调完成文件下载的“类似Ajax”体验,以提供更好的用户体验。看看我的blog post关于插件解决的常见问题以及使用它的一些方法以及demo of jQuery File Download in action。这是source

这是一个使用带有promises的插件source的简单用例演示。 demo page还包括许多其他“更好的用户体验”示例。

$.fileDownload('some/file.pdf')
    .done(function () { alert('File download a success!'); })
    .fail(function () { alert('File download failed!'); });