js导出excel


不能使用jquery的$.ajax(),$.axax不能请求下载,

使用原生ajax或模拟表单提交

原生ajax:

  var xhr = new XMLHttpRequest();
                xhr.open('POST', URL, true);
                xhr.responseType = 'arraybuffer';
                xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
                xhr.onload = function (e) {
                    //var data = new Uint8Array(this.response);
                    var blob = new Blob([this.response], { type: 'application/vnd.ms-excel,charset=utf-8' });
                    let url = window.URL.createObjectURL(blob);
                        var a = document.createElement("a");
                            a.setAttribute("href", url)
                            a.download = '库存帐查询.xlsx';
                            document.body.appendChild(a);
                            a.click()
                            document.body.removeChild(a);
                };
                //xhr.onreadystatechange = function () {
                //    // 这步为判断服务器是否正确响应
                //    if (xhr.readyState == 4 && xhr.status == 200) {
                //        var blob = new Blob([xhr.response], { type: 'application/vnd.ms-excel,charset=utf-8' });
                        
                //        let url = window.URL.createObjectURL(blob);
                //        var a = document.createElement("a");
                //            a.setAttribute("href", url)
                //            a.download = '库存帐查询.xlsx';
                //            document.body.appendChild(a);
                //            a.click()
                //            document.body.removeChild(a);
                //    }
                //};
                xhr.send(参数);

  

模拟表单提交

function download (options) {
            var defaults = {
                method: "GET",
                url: "",
                param: []
            };
            var options = $.extend(defaults, options);
            if (options.url && options.param) {
                var $form = $('
'); for (var key in options.param) { var $input = $('').attr('name', key).val(options.param[key]); $form.append($input); } $form.appendTo('body').submit().remove(); }; }