我想下载jquery AJAX 响应的pdf文件,Ajax响应包含pdf文件数据,我试过这个solution,我的代码如下,但总是得到一个空白的pdf。
$(document).on('click', '.download-ss-btn', function () {
$.ajax({
type: "POST",
url: 'http://127.0.0.1:8080/utils/json/pdfGen',
data: {
data: JSON.stringify(jsonData)
}
}).done(function (data) {
var blob = new Blob([data]);
var link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.download = "Sample.pdf";
link.click();
});
});
5条答案
按热度按时间t2a7ltrp1#
jQuery在使用 AJAX 请求加载二进制数据时存在一些问题,因为它尚未实现某些HTML5 XHR v2功能,请参阅enhancement request和discussion
考虑到这一点,您有两种解决方案之一:
第一个解决方案是放弃JQuery并使用XMLHTTPRequest
使用原生HTMLHTTPRequest,下面是执行所需操作的代码
第二种解决方案,使用jquery-ajax本机插件
这个插件可以在here中找到,可以用于JQuery中缺少的XHRV 2功能,下面是如何使用它的示例代码
hsvhsicv2#
我是新手,大部分的代码是从谷歌搜索。我得到了我的pdf下载与下面的代码(试错播放)工作。感谢代码提示(xhrFields)以上。
fruv7luv3#
在html5中你可以很容易地做到这一点:
ukqbszuj4#
对于那些寻找更现代的方法的人,你可以使用
fetch API
。下面的例子展示了如何下载一个PDF
文件。用下面的代码可以很容易地完成。我相信这种方法比其他
XMLHttpRequest
解决方案更容易理解,而且它的语法与jQuery
方法相似,不需要添加任何额外的库。当然,我建议你检查一下你正在开发的浏览器,因为这种新方法在IE上不起作用。你可以在下面的[链接][1]上找到完整的浏览器兼容性列表。
url
的服务器发送了一个JSON请求。必须设置url
,在我的示例中,我假设您了解这一部分。另外,考虑请求工作所需的头。由于我发送的是JSON,因此必须添加Content-Type
头并将其设置为application/json; charset=utf-8
。以便让服务器知道它将接收的请求的类型。vh0rcniy5#
试试这个: