我需要使用servlet作为CSV文件下载数据。我通过Ajax Request点击从ExtJS 4.1到servlet的导航树传递一个参数。是否有任何替代方法将参数传递给servlet,因为ajax可以不要强制打开/保存对话框下载?我必须通过点击导航树本身的子项来传递参数。任何人都可以帮助我吗?
我搜索了解决方案并找到了隐藏的Iframe。我不知道如何将其改编成我的?
提前多多感谢。
答案 0 :(得分:1)
使用命名空间中定义的帮助程序。完成后不要忘记删除它。
helper.util.HiddenForm = function(url,fields){
if (!Ext.isArray(fields))
return;
var body = Ext.getBody(),
frame = body.createChild({
tag:'iframe',
cls:'x-hidden',
id:'hiddenform-iframe',
name:'iframe'
}),
form = body.createChild({
tag:'form',
cls:'x-hidden',
id:'hiddenform-form',
action: url,
target:'iframe'
});
Ext.each(fields, function(el,i){
if (!Ext.isArray(el))
return false;
form.createChild({
tag:'input',
type:'text',
cls:'x-hidden',
id: 'hiddenform-' + el[0],
name: el[0],
value: el[1]
});
});
form.dom.submit();
return frame;
}
像
一样使用它helper.util.HiddenForm('my/realtive/path', [["fieldname","fieldValue"]]);
如果服务器通过下载应答,则会弹出保存窗口。