Javascript Ajax请求接收二进制数据
我有一个ajax请求,它上传一个文件和一些其他数据,解析它,然后以xls格式下载它。我目前使用ajax正确上传文件,但是当调用success函数时,它会接收二进制数据作为参数“data”。我想获取这些数据并用它创建一个文件,然后将其呈现给用户,就像它已被下载一样。这可能吗?这是我的ajax请求Javascript Ajax请求接收二进制数据,javascript,jquery,ajax,download,Javascript,Jquery,Ajax,Download,我有一个ajax请求,它上传一个文件和一些其他数据,解析它,然后以xls格式下载它。我目前使用ajax正确上传文件,但是当调用success函数时,它会接收二进制数据作为参数“data”。我想获取这些数据并用它创建一个文件,然后将其呈现给用户,就像它已被下载一样。这可能吗?这是我的ajax请求 $("#fileForm").submit(function(){ var fileData = $("#fileInputElmt").prop("files")[0]; var dat
$("#fileForm").submit(function(){
var fileData = $("#fileInputElmt").prop("files")[0];
var data = new FormData();
data.append("upload",fileData);
var url = "process.action?" + $("#fileForm").serialize();
console.log(url);
console.log(data);
$.ajax({
type: "POST",
url:url,
data:data,
cache:false,
contentType:false,
processData:false,
success:function(data){
console.log("success"+data);
hideProgressBar();
},error:function(data){
console.log("error "+data);
hideProgressBar();
}
});
return false;
});
你在找这样的东西
function downloadPDF() {
var xhr = new XMLHttpRequest();
xhr.open('POST', API_URL, true);
xhr.responseType = 'arraybuffer';
xhr.onload = function(e) {
if (this.status == 200) {
var bb = new window.WebKitBlobBuilder();
bb.append(this.response); // Note: not xhr.responseText
var blob = bb.getBlob('application/pdf');
var blobURL = window.webkitURL.createObjectURL(blob);
window.open(blobURL);
}
};
xhr.send(createRequest());
}
仅适用于较新的浏览器、Chrome IE9+等
示例用户使用xhr,但是如果您的ajax调用返回二进制,您应该能够执行类似的操作