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