后端进行数据查询,返回处理结果到excel,前端使用的是ajax。
最开始的写法是:ajax的url里填写接口路径,结果代码能正常运行,但页面始终没有弹出下载框
原因:ajax是无法直接导出excel的,因为ajax的返回值只能是字符流,而导出excel是后台往浏览器中写入二进制的字节流
方法一、form表单(推荐)
<a href="javascript:void(0)" onclick="exportExcel()">导出</a>
function exportExcel(){
var form = $("<form>");
form.attr('style', 'display:none');
form.attr('target', '');
form.attr('method', 'post');
form.attr('action', '接口url');
var input1 = $('<input>');
input1.attr('type', 'hidden');
input1.attr('name', '参数');
input1.attr('value', '参数值'); /* JSON.stringify($.serializeObject($('#searchForm'))) */
$('body').append(form);
form.append(input1);
form.submit();
form.remove();
}
方法二、window.location.href()
function() {
window.location.href = "接口url?参数1=xxx&参数2=aaa";
}
方法三、ajax请求把参数缓存在后端返回给前端,前端ajax再次发起一个window.open(url?params=params)即可
$.ajax({
url: '接口url',
type: 'post',
dataType: "json",
contentType : 'application/json',
data : JSON.stringify(this.tableOpts),
success: function(data){
window.open('接口url?params=xxxx');
}
});
注意,使用window.open()或是window.location.href()时有个前端传值限制,超过限制数会报错。
Microsoft Internet Explorer (Browser):IE浏览器对URL的最大限制为2083个字符,如果超过这个数字,提交按钮没有任何反应。
Firefox (Browser):对于Firefox浏览器URL的长度限制为65,536个字符
Safari (Browser):URL最大长度限制为 80,000个字符。
Opera (Browser):URL最大长度限制为190,000个字符。
Google (chrome):url最大长度限制为8182个字符