0%

Extjs中文件下载的实现以及Ajax异步问题

一开始想通过Ajax异步方式(Ext.Ajax.request())实现文件下载,却一直没有成功。 在firebug中查看response的时候,发现Ajax异步方式,服务器端将文件的2进制流写入了XMLHTTPRequest对象,于是一直无法将文件取出。 其实一开始的时候思路就是错的,下载文件不能通过异步方式实现。 那么怎样在Extjs中实现Ajax式(不刷新页面,只弹出下载对话框)的下载呢? 只需要在body中创建一个隐藏(hidden)表单(form)就可以了。 比如下载按钮的handler可以写成下面这种形式:  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
handler : function () {
var body = Ext.getBody();
var frame = body.createChild({
tag: 'iframe'
, cls: 'x-hidden'
, id: 'iframe'
, name: 'iframe'
});

var form = body.createChild({
tag: 'form',
cls: 'x-hidden',
id: 'form',
action: 'your-action-URL',
target: 'iframe'
});

form.dom.submit();
}