原生js 獲取響應頭中的值


downloadFile(data, code)
 
data請求的參數
code是需要在response header 中得到的參數

downloadFile(data,codeStr) {
        if(window.XMLHttpRequest){
            var xhr = new XMLHttpRequest();
        }else{
            var xhr = new ActiveXObject("Microsoft.XMLHTTP");
        };
        xhr.open('POST', da.conf.ajaxUrl + data.url, true);        // 也可以使用POST方式,根據接口
        xhr.setRequestHeader('AuthToken', da.getLocal('token') || '')
        xhr.setRequestHeader('Content-Type', 'application/json')
        xhr.send(JSON.stringify(data.data))
        xhr.responseType = "blob";    // 返回類型blob
        // 定義請求完成的處理函數,請求前也可以增加加載框/禁用下載按鈕邏輯
        xhr.onload = function () {
            // 請求完成
            var messageCode = xhr.getResponseHeader(codeStr);
            if(messageCode != '1'){
               return;
            }
            if (this.status === 200) {
                if(data.zip) {
                    var blob = new Blob([this.response], { type: "application/zip" });
                }else {
                    var blob = this.response;
                } 
                var reader = new FileReader();
                reader.readAsDataURL(blob);
                reader.onload = function (e) {
                    // 轉換完成,創建一個a標簽用於下載
                    var a = document.createElement('a');
                    a.download = data.name || '下載';
                    a.href = e.target.result;
                    $("body").append(a);    // 修復firefox中無法觸發click
                    a.click();
                    $(a).remove();
                }
            }
        };
    },


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM