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

AJAX获取Base64格式PDF后无法正常显示的问题排查

问题分析与解决方案

核心问题在于jQuery AJAX默认会根据响应头自动解析数据,导致你拿到的data并非接口返回的原始Base64纯文本;同时你对已经是Base64格式的字符串再次执行Base64.encode(),造成双重编码,最终生成的PDF自然无法正常显示。

修正步骤:

  • 强制AJAX以纯文本形式接收响应,添加dataType: 'text'参数,阻止jQuery自动解析数据
  • 移除多余的Base64.encode()调用,直接使用接口返回的原始Base64字符串拼接PDF的Data URI

修正后的代码:

$.ajax({
    type: "POST",
    url: "/download",
    data: JSON.stringify(postData),
    contentType: "application/json",
    encode: true,
    dataType: 'text' // 关键:强制接收纯文本
})
.done(function (data) {
    // 直接使用原始Base64字符串,无需再次编码
    window.open("data:application/pdf;base64," + data);
})
.fail(function (err) {
    $('.toast-header strong').html('Download Error');
    $('.toast-body').html('An error occured while downloading the file.');
    let toast = new bootstrap.Toast($('#liveToast'));
    toast.show();
});

补充说明:

console.log(data)显示内容与API响应不一致,正是因为jQuery默认根据响应头(比如Content-Type)对数据做了解析(例如当成JSON解析),设置dataType: 'text'后,就能拿到和接口响应完全一致的纯文本Base64字符串,此时直接用于生成PDF即可正常显示。

内容的提问来源于stack exchange,提问作者Amit Pathak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 12:50:08