使用jquery ajax下载pdf文件
我想下载一个jQueryajax响应的pdf文件。Ajax响应包含pdf文件数据。。我的代码在下面给出,但是我总是得到一个空白的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();
});
});
回答:
jQuery使用AJAX请求加载二进制数据时存在一些问题,因为它尚未实现某些HTML5 XHRv2功能
鉴于此,您拥有以下两种解决方案之一:
与本地HTMLHTTPRequest一起使用,这是执行所需操作的代码
var req = new XMLHttpRequest(); req.open("GET", "/file.pdf", true);
req.responseType = "blob";
req.onload = function (event) {
var blob = req.response;
console.log(blob.size);
var link=document.createElement('a');
link.href=window.URL.createObjectURL(blob);
link.download="Dossier_" + new Date() + ".pdf";
link.click();
};
req.send();
该插件可以在此处找到,并且可以用于JQuery中缺少的XHRV2功能,这是如何使用它的示例代码
$.ajax({ dataType: 'native',
url: "/file.pdf",
xhrFields: {
responseType: 'blob'
},
success: function(blob){
console.log(blob.size);
var link=document.createElement('a');
link.href=window.URL.createObjectURL(blob);
link.download="Dossier_" + new Date() + ".pdf";
link.click();
}
});
以上是 使用jquery ajax下载pdf文件 的全部内容, 来源链接: utcz.com/qa/435807.html