You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将AJAX请求获取的XML文本转换为可下载文件

解决XML文本响应的AJAX下载问题

嘿,我懂你碰到的状况——之前处理Blob格式的PDF下载顺风顺水,但换成XML文本响应后,直接套用原来的代码就不管用了对吧?其实核心问题是服务器返回的XML是纯文本,不是Blob对象,我们只需要多一步把文本转成Blob的操作就行,修改后的代码如下:

$.ajax({
  method: "GET",
  beforeSend: function(request) {
    request.setRequestHeader("Authorization", bearer); // 注意你原代码里多了个多余的右括号,记得删掉哦
  },
  url: url,
  // 这里把responseType改成'text'(默认也是text,也可以直接删掉这行)
  xhrFields: { 
    responseType: "text" 
  },
  success(xmlText) {
    // 关键步骤:把XML文本转换成Blob对象,指定正确的MIME类型
    const xmlBlob = new Blob([xmlText], { type: 'application/xml' });
    // 剩下的下载逻辑和你处理PDF的完全一致
    var link = document.createElement("a");
    link.href = window.URL.createObjectURL(xmlBlob);
    link.download = "file.xml";
    link.click();
    // 可选:释放临时URL,避免内存泄漏
    window.URL.revokeObjectURL(link.href);
  }
});

关键修改点说明:

  • responseType调整:因为服务器返回的是XML文本,所以把responseType设为"text"(其实默认就是text,也可以直接删掉xhrFields部分),确保能拿到原始的XML字符串。
  • 文本转Blob:用new Blob([xmlText], { type: 'application/xml' })把XML字符串包装成Blob对象,MIME类型也可以用"text/xml",两种都能被浏览器识别为XML文件。
  • 内存优化(可选):调用window.URL.revokeObjectURL(link.href)可以释放创建的临时URL,避免长时间运行后内存占用过高。

另外,你原代码里bearer变量后面多了个多余的右括号(bearer))),记得要删掉,不然会触发语法错误哦!

内容的提问来源于stack exchange,提问作者Vítor Martins

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 17:52:37