[轉]ExtJS中Ajax实现File Download

Ajax的处理都是异步的,所以想实现文件下载这种同步的操作,就比较捉襟见肘。
不过google了一下,找到了一个方法,当然不是完美
主旨就是提交一个request,在server端将文件生成好,然后返回文件名,
client端则在js中隐藏一个frame,将frame的src指向生成的文件(根据返回的文件名)

client:
Ext.Ajax.request({
url: '/csvoutput/',
success: function(r, o) {
obj = Ext.util.JSON.decode(r.responseText);
try {
Ext.destroy(Ext.get('downloadIframe'));
}
catch(e) {}
Ext.DomHelper.append(document.body, {
tag: 'iframe',
id:'downloadIframe',
frameBorder: 0,
width: 0,
height: 0,
css: 'display:none;visibility:hidden;height:0px;',
src: obj.filename
});
},
failure: function(r, o){
},
headers: {
'my-header': 'csvoutput'
},
params: { }
});

server:(django)
result = {}
result['filename'] = filename
result['success'] = True
return HttpResponse(simplejson.dumps(result), mimetype='text/javascript')
posted @ 2011-04-25 18:48  Athrun  阅读(1592)  评论(0编辑  收藏  举报