我发现这些论坛中的许多答案对我来说非常有用,但会要求你查看我的这个问题。
我正在尝试从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
消息中。
请告诉我你的意见。
谢谢, 阿迪亚
答案 0 :(得分:1)
简短的回答:你不能用AJAX来做,它忽略了Content-Disposition标题,以便能够提供其数据对象。你必须依赖浏览器,它会尊重这个标题。
因此,在servlet上执行常规POST (隐藏字段)或GET (使用查询字符串参数)。
或者使用用户this jQuery Plugin推荐的Vinodh Ramasubramania on Stackoverflow来自动执行此过程。代码很短,就是这样......
这个主题有很多主题: