问题描述
var _exportExcel = function() {$.ajax({type: "GET",url : "boQueryAction!queryOrderListExportInfo.action",data : {"g_paramInfo":JSON.stringify(g_paramInfo)},cache : false,async : false,contentType:"application/json",error : function() {alert("导出失败");}}); JS代码如上 后端代码没问题,我已经response.setContentType("application/vnd.ms-excel;");response.setHeader("Content-Disposition", "attachment;filename=" + templateName + ".xls");都写好了,而且我断点看了,后台已经把HSSFWorkbook对象的EXCEL数据都准备好了并且已经输出//得到输出流out = response.getOutputStream();workBook.write(out);//刷新输出流但是点击导出按钮,不报错误,后台有查询数据的日志,也没有错.就是没有任何反应所以想请教一下各位,前台ajax这种调用方式,是不是打不开EXCEL? 问题补充:<div class="quote_title">suziwen 写道</div><div class="quote_div">在浏览器安全范围内无法直接通过AJAX实现文件下载<br /><br /><br />你直接设置 location.href='boQueryAction!queryOrderListExportInfo.action';或者通过隐藏的iframe把下载地址赋值给src</div><br /><br /><br />您好,不能直接打开这个action,我主要是还要传入这个json字符串<br />data : {"g_paramInfo":JSON.stringify(g_paramInfo)}, <br />不知道怎么实现呢
解决方案
data : {"g_paramInfo":JSON.stringify(g_paramInfo)}, 那就是你自己在页面里先创建一个FORM(用DIV隐藏起来),这个FORM里包含g_paramInfo文本域,具体值就是你的JSON.stringify(g_paramInfo),这个FORM的ACTION就是boQueryAction!queryOrderListExportInfo.action,要下载时,就通过JQUERY把这个FORM提交上去,记得对这个FROM的TARGET设置成_blank,让他在新窗口打开
解决方案二:
引用引用{"g_paramInfo":JSON.stringify(g_paramInfo)},这个提交时实际也是以健值方式提交的,可以直接拼成参数附加到 url后面"***.action?g_paramInfo="+JSON.stringify(g_paramInfo)直接拼成参数不是很好,有可能g_paramInfo里面的值是中文,再或者长度超出url地址最大长度时就不好使了引用g_paramInfo如果值比较简单,是可以这样做的,也方便 很对,视具体情况,也可以在iframe中提交信息的
解决方案三:
g_paramInfo如果值比较简单,是可以这样做的,也方便
解决方案四:
引用{"g_paramInfo":JSON.stringify(g_paramInfo)},这个提交时实际也是以健值方式提交的,可以直接拼成参数附加到 url后面"***.action?g_paramInfo="+JSON.stringify(g_paramInfo)直接拼成参数不是很好,有可能g_paramInfo里面的值是中文,再或者长度超出url地址最大长度时就不好使了
解决方案五:
引用问题补充:suziwen 写道在浏览器安全范围内无法直接通过AJAX实现文件下载 你直接设置 location.href='boQueryAction!queryOrderListExportInfo.action';或者通过隐藏的iframe把下载地址赋值给src您好,不能直接打开这个action,我主要是还要传入这个json字符串 data : {"g_paramInfo":JSON.stringify(g_paramInfo)}, {"g_paramInfo":JSON.stringify(g_paramInfo)},这个提交时实际也是以健值方式提交的,可以直接拼成参数附加到url后面"***.action?g_paramInfo="+JSON.stringify(g_paramInfo)
解决方案六:
在浏览器安全范围内无法直接通过AJAX实现文件下载你直接设置 location.href='boQueryAction!queryOrderListExportInfo.action';或者通过隐藏的iframe把下载地址赋值给src
解决方案七:
你要用iframe提交请求,才能获取响应流
解决方案八:
废话,文件流怎么能用ajax处理?不用那么麻烦的,直接打开boQueryAction!queryOrderListExportInfo.action就有下载提示了