前端:ajax调用导出数据到excel方法,方法有执行但没有下载

11 篇文章 0 订阅
9 篇文章 0 订阅

后端进行数据查询,返回处理结果到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个字符

关于window.location和window.open()的区别,后者下载的时候会打开一个新的窗口,下载文件成功时,窗口关闭,一般下载够快的话,是看不到窗口的!但是前者下载是不会打开新的窗口,建议使用前者! 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值