关于extjs下载excel文件使用到Ajax异步请求

10 篇文章 0 订阅

mark一下,

开发过程中,项目使用extjs4和Struts2整合在一起。

其中有个excel文件的下载功能。

项目中最初是使用window.location.href

window.location.href ="sam/exportSampleDetailExcel.action?sampleManagement.sampleNum="+Ext.JSON.encode(jsonArray);

但是传值到后台去是非常不方便的,这个利用get传值有限制字符串的长度。若sampleManagement.sampleNum的值过大,那么是无法成功执行这个下载的。


然后我想到了使用Ajax异步来写下载功能。如下代码:

Ext.Ajax.request({
  disableCaching: true ,
  url : extPath+ 'sam/exportSampleDetailExcel.action',
  timeout: 100000000,
  method : 'post',
  isUpload: true,
  form: Ext.fly('formFly'),
  params : {
  'sampleManagement.sampleNum':Ext.JSON.encode(jsonArray)
  }
 });
						

但是没法成功下载,是直接显示的乱码,其实是转化为文件流了。所以这么写依旧不能实现该功能。

怎么办呢,其实使用还是可以使用Ajax异步来下载的。

将上述代码这么写:

if (!Ext.fly('formFly')) {
  var frm = document.createElement('form');
  frm.id = 'formFly';
  frm.className = 'x-hidden';
  document.body.appendChild(frm);
}
<pre name="code" class="javascript"> Ext.Ajax.request({
  disableCaching: true ,
  url : extPath+ 'sam/exportSampleDetailExcel.action',
  timeout: 100000000,
  method : 'post',
  isUpload: true,
  form: Ext.fly('formFly'),
  params : {
  'sampleManagement.sampleNum':Ext.JSON.encode(jsonArray)
  }
});

 

这样就可以完成下载的功能了。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值