0

我发现这些论坛中的许多答案对我非常有用,但会要求您检查我的这个问题。

我正在尝试.csv从 jquery 方法调用的 servlet 中保存文件。虽然我正在设置标题和content-diposition. 流式写入数据后,我没有在浏览器中看到对话框。

function popup(data) {
    $.post("cisco-fetch-devices", { orderId : data},
        function(data) {
            alert("Data Loaded: " + data);  
        });
    });
}

上面的 jquery 代码正在调用下面的 servlet post 方法:

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
    response.setContentType("text/csv");
    response.setHeader ("Content-Disposition", "attachment;filename=\"tableincsv.csv\"");
    java.io.PrintWriter out = response.getWriter();
    out.print("test data");
}

数据发送回浏览器后,对话框不显示。但是,在 servlet 中设置的数据out.print正确显示在alertJS 方法的消息中。

请给我你的意见。

谢谢,阿迪亚

4

1 回答 1

1

简短的回答:你不能用 AJAX 来做,它会忽略 Content-Disposition 标头以便能够提供它的数据对象。您必须依赖浏览器,它尊重此标头。

因此,请在您的 servlet 上执行常规 POST(带有隐藏字段)或 GET(带有查询字符串参数)。

或者使用用户Vinodh Ramasubramania 在 Stackoverflow 上推荐的这个 jQuery 插件来自动化这个过程。代码很短,就是这样做的......

关于这个主题有很多线程:

于 2012-06-07T13:30:04.030 回答