用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'
});
});