从 AJAX 检索 XML 数据,提示用户下载

Retrieve XML data from AJAX, prompt user to Download?

本文关键字:提示 用户 下载 数据 AJAX 检索 XML      更新时间:2023-09-26

我正在处理项目的客户端部分,并且遇到当前从服务器接收 XML 数据块的情况,我正在尝试获取该信息并提示用户使用它下载。这可能吗?

这是我的代码:

 var holder =
    jQuery.ajax({
                type: "POST",
                url: "xml_comes_back.json",
                data: {param : info,
                        param2 : info2
                },
                dataType: ($.browser.msie) ? "text" : "xml",
                success: function(data) { 
                    $('#selector').prev().empty().html('<a href="' + data + '" id="download">Ready for Download</a>');
                    $('#download').click(function() {
                       //Prompt download for xml stored in 'data' here
                    });

                },
                error:function (xhr, ajaxOptions, thrownError) {
                   alert('error')
                }
            });
}

我在尝试实现这一目标时遇到了重大问题。是否可以在没有服务器通过 URL 创建和存储的情况下下载此文件?我只想使用正确的标题动态接收数据并让下载链接正常工作。

下面是从 ajax 调用成功返回的响应标头:

Content-Disposition:attachment; filename=theFile.xml
Content-Type:application/force-download;charset=UTF-8

将它们链接到生成文件的页面,包括内容类型标头,以便强制他们下载文件(或使用 JavaScript 重定向它们)。我相信现代浏览器会简单地下载它,而不会实际打开一个新窗口。

如果您从 ajax 获得的信息是 url,而不仅仅是使用"window.location = data"到一个页面,该页面将具有正确的内容类型和内容处置,这将强制用户下载。我认为它不会打开一个新的选项卡/窗口。