在iOS12.2中通过AJAX下载Blob(PDF)时出现问题

时间:2019-04-26 10:37:05

标签: javascript jquery ios ajax download

我有一些代码可以将Base64数据包转换为PDF文件,然后作为AJAX请求的一部分下载。

此版本的Chrome和IE效果很好,并且在iOS的早期版本中也很好。但是,在iOS 12.2上尝试加载结果时出现以下错误: “ xmlhttprequest由于访问控制检查而无法加载”

我已经在线阅读了许多有关此的文章,但是解决方案差强人意,我打开一个新标签页,启动AJAX请求,然后将结果加载到新标签页中。不太喜欢!

我想念什么吗?这是一个已知的错误吗?

我愿意满足以下条件:

  1. 理想的方法是像以前一样在浏览器窗口中打开pdf文件。
  2. 我愿意按照当前的解决方案在新窗口中打开pdf文件,但iOS似乎阻止了在AJAX始终调用期间打开的新窗口。这使我不得不在请求之前将其打开,并希望我得到返回的结果!

        if (/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream) {
            var redirectWindow = window.open('', '_blank');
        }
        APICall.always(function (response) {
            if (!utils.checkTimedOut(response.status)) {
                model.pdfData = response && response.data || [];
                if (model.pdfData) {
                    var arrBuffer = base64ToArrayBuffer(model.pdfData);
    
                    var newBlob = new Blob([arrBuffer], { type: "application/pdf" });
    
                    // Mobile IOS
                    if (/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream) {
                        var reader = new FileReader();
                        reader.fileName = model.customerDocument.valuationDate + ".pdf";
                        reader.onload = function (e) {
                            redirectWindow.location = reader.result;
                        };
                        reader.readAsDataURL(newBlob);
                        return;
                    }
    
                    // IE....
    
                    // For other browsers.... 
    
                }
            }
        });
    

0 个答案:

没有答案