在Servlet中保存对话

时间:2012-06-07 12:15:11

标签: javascript jquery servlets

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

我正在尝试从jquery方法调用的servlet中保存.csv文件。虽然我正在设置标题和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中设置的数据正确显示在JS方法的alert消息中。

请告诉我你的意见。

谢谢, 阿迪亚

1 个答案:

答案 0 :(得分:1)

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

因此,在servlet上执行常规POST (隐藏字段)或GET (使用查询字符串参数)。

或者使用用户this jQuery Plugin推荐的Vinodh Ramasubramania on Stackoverflow来自动执行此过程。代码很短,就是这样......

这个主题有很多主题: