使用ExtJS 4.1将文件下载为CSV而不使用Ajax请求的替代方法?

使用ExtJS 4.1将文件下载为CSV而不使用Ajax请求的替代方法?,ajax,iframe,extjs,download,extjs4.1,Ajax,Iframe,Extjs,Download,Extjs4.1,我需要使用servlet作为CSV文件下载数据。我通过Ajax请求通过单击ExtJS 4.1中的导航树将参数传递给servlet。是否有其他方法将参数传递给servlet,因为Ajax无法强制打开/保存对话框下载?我必须通过单击导航的子项来传递参数树本身。有人能帮我吗 我寻找解决方案,发现了隐藏的Iframe。我不知道如何将其应用到我的中 非常感谢。使用命名空间中定义的帮助器。完成后别忘了取下它 helper.util.HiddenForm = function(url,fields){

我需要使用servlet作为CSV文件下载数据。我通过Ajax请求通过单击ExtJS 4.1中的导航树将参数传递给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"]]);
如果服务器回答下载,则会弹出保存窗口