Как использовать XMLHttpRequest для возврата файла в Firefox?Кажется, никогда не ударил readystate == 4 и status == 200 - PullRequest
0 голосов
/ 28 декабря 2018

В основном я использую Ajax для вызова C # WebMethod, который возвращает байтовый массив, состоящий из файла Excel.Он работает в IE и Chrome, но не работает в Firefox.Консоль возвращает readystate из 4, но в FireFox статус 0, тогда как в других браузерах она попадает в блок if, где readystate равен 4, а статус равен 200. Ниже приведен код.Если кто-то знает, что я делаю неправильно, я был бы очень признателен за помощь, но я попытался сделать несколько шагов, чтобы исправить ситуацию, и ни один из них не работал.

Если я вставлю alert('got here') послестрока, содержащая xhttp.send, будет ли она работать в Firefox?

<script type="text/javascript">
    $("#operation").click(function () {
        var xhttp = new XMLHttpRequest();
        xhttp.open("POST", "Default.aspx/GetText");
        xhttp.addEventListener("progress", function (e) {
            if (e.lengthComputable) {
                //alert("TOTAL:" + e.total + " LOADED:" + e.loaded);

                var percentComplete = Math.ceil((e.loaded / e.total) * 100);
                progressBar.max = e.total;
                progressBar.val(percentComplete);

                //console.log(percentComplete);
            }
        }, false);
        xhttp.responseType = 'blob';
        xhttp.setRequestHeader("Content-Type", "application/json");
        xhttp.onreadystatechange = function () {
            var a;
            //console.log(xhttp);
            if (xhttp.readyState === 4 && xhttp.status === 200) {
                var blob = xhttp.response;
                var link = document.createElement('a');
                link.href = window.URL.createObjectURL(blob);
                link.download = "ItemMatrix.xlsx";
                document.body.appendChild(link);
                link.click();
            } else {
                console.log(xhttp);
            }
        };
        xhttp.send(JSON.stringify({ sender: 'Generate Excel', itemLIST: $('#MainContent_itemnumberlist').val(), includeIMAGES: $('#<%= IncludeImages.ClientID %>').is(':checked') }));
    });
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...