日期:2014-05-16  浏览次数:20727 次

Ajax+servlet实现文件下载. - Web 开发 / Ajax
各位前辈们,小弟最近遇到一个问题实在是难以解决,所以求救各位:


具体的功能是:
利用Ajax访问web的servlet.
主要目的是为了下载以及加载号的报表:
具体代码是:

Ajax:

function reportRequest(){
var req=null;
var url ='ajax.report';
if(typeof XMLHttpRequest == 'undefined') {
req = new ActiveXObject('Microsoft.XMLHttp');
}else{
req = new XMLHttpRequest();
}
req.open('post',url, true);//true表示异步
req.onreadystatechange=function() {
if(req.readyState==4) {
alert("请点击保存");
}
};
req.send(null);

}






servlet:

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ServletOutputStream servletOutputStream = response.getOutputStream();
try {
System.out.println("ddd");
HttpSession sess=request.getSession();
JRXlsExporter exporter=(JRXlsExporter)sess.getAttribute("exporter");
String reportName=(String)sess.getAttribute("reportName");
ByteArrayOutputStream oStream = new ByteArrayOutputStream();
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, oStream);
exporter.exportReport();
response.setContentType("application/vnd.ms-excel;charset=utf-8");
response.setHeader("Content-disposition", reportName);
servletOutputStream.flush();
servletOutputStream.close();
} catch (JRException e) {
e.printStackTrace();
}
}

可是始终不能出现下载的页面.恳求各位高手能指点一二.谢谢..

------解决方案--------------------
ajax在浏览器安全范围内无法实现文件下载。。。


你直接设置 location.href='ajax.report';这样不就行了??干吗非得用ajax