Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Ajax请求接收二进制数据_Javascript_Jquery_Ajax_Download - Fatal编程技术网

Javascript 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

我有一个ajax请求,它上传一个文件和一些其他数据,解析它,然后以xls格式下载它。我目前使用ajax正确上传文件,但是当调用success函数时,它会接收二进制数据作为参数“data”。我想获取这些数据并用它创建一个文件,然后将其呈现给用户,就像它已被下载一样。这可能吗?这是我的ajax请求

$("#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调用返回二进制,您应该能够执行类似的操作