如何使用$ .ajax()GET响应指定内容类型和内容处置

时间:2010-06-23 22:53:47

标签: jquery

我想制作一个异步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");
    }

在'success'回调中,我看到文件内容在'data'变量中作为纯文本传回,但是需要'save'对话框才能在浏览器上启动。

服务器IS使用正确的标头设置发回响应。

2 个答案:

答案 0 :(得分:3)

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

如果您想以编程方式弹出保存对话框,可以使用jQuery将隐藏的iframe附加到页面,其URL为src。这应该根据需要弹出对话框。

答案 1 :(得分:-1)

这是服务器必须要做的事情。您无法从客户端执行任何操作,这会迫使不愿意的服务器设置响应标头。