我想发出一个异步GET请求,该请求返回一个具有MIME内容类型的文档,并使其带有浏览器的“保存”对话框。

以前,我曾经通过链接进行常规HTTP(非异步)调用,并且返回的响应具有“ Content-Type”和“ Content-Disposition”,如下所示:

Content-Type: text/plain
Content-Disposition: attachment;
    filename=genome.jpeg;
    modification-date="Wed, 12 Feb 1997 16:29:51 -0500";


有没有一种方法可以将其转换为jQuery的$ .ajax()GET请求?

$ .ajax方法仅支持dataTypes,“ xml”,“ html”,“ script”,“ json”,“ jsonp”和“ text”。我的响应数据类型会属于这些类别之一吗?

我的请求如下所示:

$.ajax({url: myUrl,
    data: params,
    type: "GET",
    success: function(data)
    {
        console.log("try to save this file!");
    },
    error: function(req, status, errThrown){
        alert("ERROR: Something happened");
    }


在“成功”回调中,我看到文件内容以纯文本形式在“数据”变量中传回,但需要“保存”对话框才能在浏览器中启动。

服务器正在发送回带有正确标头的响应。

最佳答案

我没有办法得到真正的Ajax请求以弹出一个保存对话框。这与服务器发送的标头无关。

如果您想以编程方式弹出一个保存对话框,则可以使用jQuery将隐藏的iframe附加到带有src的URL的页面上。这将在必要时弹出对话框。

关于jquery - 如何使用$ .ajax()GET响应指定内容类型和内容处置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41836519/

10-16 13:36