Ответ AJAX должен быть преобразован в блоб - PullRequest
0 голосов
/ 05 мая 2018

Я написал код ajax для установки заголовков запросов в url и преобразовал их в BLOB-объекты и передал функции showFile (blob);. Затем blob обрабатывается и загружается в формате PDF Значение blob, полученное в коде, приходит как undefined. Может кто-нибудь, пожалуйста, помогите мне решить проблему`

   var resolved = function (url) {
        var showFile = function (blob) {
            var newBlob = new Blob([blob], {type:"application/pdf"})                   
            const data = window.URL.createObjectURL(newBlob);
            var link = document.createElement('a');
            link.href = data;
            link.download = options.name;
            link.click();
            setTimeout(function () {
                window.URL.revokeObjectURL(data);
            }, 100)
        }
        var jwtToken = localStorage.getItem("jwtToken");
        var headerObj = {"Authorization": "Bearer " + jwtToken}

        var xhr = new XMLHttpRequest();
        $.ajax({
            dataType:'blob',
            type:'GET',
            url:url
        }).done(function(blob){
            showFile(blob); 
        });
    };

1 Ответ

0 голосов
/ 06 мая 2018

Если вам нужен ответ BLOB-объекта от jQuery ajax, установите для поля responseType для xhrFields значение blob. Поскольку ответом будет блоб, вам не нужно его создавать.
Кроме того, вы забыли добавить свой заголовок auth к запросу?

   var resolved = function (url) {
        var showFile = function (blob) {                 
            const data = window.URL.createObjectURL(blob);
            var link = document.createElement('a');
            link.href = data;
            link.download = options.name;
            link.click();
            setTimeout(function () {
                window.URL.revokeObjectURL(data);
            }, 100)
        }
        var jwtToken = localStorage.getItem("jwtToken");
        var headerObj = {"Authorization": "Bearer " + jwtToken}

        var xhr = new XMLHttpRequest();
        $.ajax({
            xhrFields: {
               responseType: 'blob' 
            }
            headers: headerObj, 
            type:'GET',
            url:url
        }).done(function(blob){
            showFile(blob); 
        });
    };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...