2

我需要使用 servlet 作为 CSV 文件下载数据。我通过单击 ExtJS 4.1 的导航树通过 Ajax 请求将参数传递给 servlet。有没有其他方法可以将参数传递给 servlet,因为 ajax 无法强制要下载的打开/保存对话框?我必须通过单击导航树本身的子项来传递参数。有人可以帮我吗?

我搜索了解决方案,发现隐藏的 Iframe。我不知道如何将其适应我的?

提前非常感谢。

4

1 回答 1

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"]]);

如果服务器回答下载,则会弹出保存窗口。

于 2012-09-13T10:49:17.640 回答