ajax无法实现导出excel

用ajax导出不会弹出下载框

ajax 其实只是一个javascript中的一个组建 XmlHttpRequest, 他的作用是数据交互, 返回数据是组建内部处理的, 下载是需要浏览器识别http头的。

点击事件促发异步请求,在响应中,设置响应头和体,在用response在输出流,写到响应中,弹出下载框是设置了响应头和体,才能弹出!

所以可以用js添加iframe和form表单和input,然后调用form.submit()。最后在把这些对象删除即可。

var postDownLoadFile = function (options) {
    var config = $.extend(true, { method: 'post' }, options);
    var $iframe = $('<iframe id="down-file-iframe" />');
    var $form = $('<form target="down-file-iframe" method="' + config.method + '" />');
    $form.attr('action', config.url);
    for (var key in config.data) {
        $form.append('<input type="hidden" name="' + key + '" value="' + config.data[key] + '" />');
    }
    $iframe.append($form);
    $(document.body).append($iframe);
    $form[0].submit();
    $iframe.remove();
}

//导出
$("#btnExport_year").on('click',
        function() {
          var param={};
          postDownLoadFile({
            url:path + '/monthlyCollection/exportExcelDoc.json',
            data:param,
            method:'post'
          });
        });
 

猜你喜欢

转载自blog.csdn.net/cjc000/article/details/53931010
今日推荐