jQuery.ajax()``responseType默认情况下没有设置。您可以使用polyfill,例如实现二进制数据传输的jquery-
ajax-blob-arraybuffer.js,也可以利用
fetch()。
。用
<iframe>element代替
<object>element。
$(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); });plnkr
http://plnkr.co/edit/9R5WcsMSWQaTbgNdY3RJ?p=preview
版本1
jquery-ajax-blob-arraybuffer.js,
jQuery.ajax(); 版本2
fetch(),
.arrayBuffer()



