在不使用 Ajax 请求的情况下使用 ExtJS 4.1 将文件下载为 CSV 的替代方法?
Posted
技术标签:
【中文标题】在不使用 Ajax 请求的情况下使用 ExtJS 4.1 将文件下载为 CSV 的替代方法?【英文标题】:Alternate way for downloading file as CSV using ExtJS 4.1 without using Ajax Request? 【发布时间】:2012-09-13 07:32:48 【问题描述】:我需要使用 servlet 作为 CSV 文件下载数据。我通过单击从 ExtJS 4.1 到通过 Ajax 请求的 servlet 的导航树来传递参数。有没有其他方法可以将参数传递给 servlet,因为 ajax 可以't force the open/save dialog to download?我必须通过单击导航树本身的子项来传递参数。有人可以帮我吗?
我搜索了解决方案,发现像隐藏的 iframe。我不知道如何将它改编成我的?
非常感谢。
【问题讨论】:
【参考方案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"]]);
如果服务器回答下载,则会弹出保存窗口。
【讨论】:
以上是关于在不使用 Ajax 请求的情况下使用 ExtJS 4.1 将文件下载为 CSV 的替代方法?的主要内容,如果未能解决你的问题,请参考以下文章
CORS 谷歌浏览器扩展有啥替代品吗?如何在不使用 CORS 的情况下成功发出 ajax 请求?
jquery 或 javascript 中有没有一种方法可以在不使用 ajax 请求的情况下在页面加载时填充下拉列表?