jQuery.ajax()默认情况下没有设置。您可以使用 polyfill,例如 jquery-ajax-blob-arraybuffer.js它来实现二进制数据传输,或者利用 .responseTypefetch()
另请注意,铬、铬在任一元素和元素处的显示都存在问题,请参阅使用带有 blob URL 的对象嵌入标记显示 PDF、使用 PDFObject 嵌入 Blob。使用元素替换元素。.pdf<object><embed><iframe><object>
$(function() {
var pdfsrc = "/display";
var jQueryAjaxBlobArrayBuffer = "https://gist.githubusercontent.com/SaneMethod/"
+ "7548768/raw/ae22b1fa2e6f56ae6c87ad0d7fbae8fd511e781f/"
+ "jquery-ajax-blob-arraybuffer.js";
var script = $("<script>");
$.get(jQueryAjaxBlobArrayBuffer)
.then(function(data) {
script.text(data).appendTo("body")
}, function(err) {
console.log(err);
})
.then(function() {
$.ajax({
url: pdfsrc,
dataType: "arraybuffer"
})
.then(function(data) {
// do stuff with `data`
console.log(data, data instanceof ArrayBuffer);
$("#pdfviewer").attr("src", URL.createObjectURL(new Blob([data], {
type: "application/pdf"
})))
}, function(err) {
console.log(err);
});
});
});
用fetch().arrayBuffer()
var pdfsrc = "/display";
fetch(pdfsrc)
.then(function(response) {
return response.arrayBuffer()
})
.then(function(data) {
// do stuff with `data`
console.log(data, data instanceof ArrayBuffer);
$("#pdfviewer").attr("src", URL.createObjectURL(new Blob([data], {
type: "application/pdf"
})))
}, function(err) {
console.log(err);
});
普 http://plnkr.co/edit/9R5WcsMSWQaTbgNdY3RJ?p=preview
版本 1 , ;版本 2 ,jquery-ajax-blob-arraybuffer.jsjQuery.ajax()fetch().arrayBuffer()