我需要使用 servlet 作为 CSV 文件下载数据。我通过单击 ExtJS 4.1 的导航树通过 Ajax 请求将参数传递给 servlet。有没有其他方法可以将参数传递给 servlet,因为 ajax 无法强制要下载的打开/保存对话框?我必须通过单击导航树本身的子项来传递参数。有人可以帮我吗?
我搜索了解决方案,发现隐藏的 Iframe。我不知道如何将其适应我的?
提前非常感谢。
使用在命名空间中定义的助手。完成后不要忘记将其删除。
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"]]);
如果服务器回答下载,则会弹出保存窗口。