java导出功能response.setHeader("Content-disposition...先运行js脚本,在线等

<scripttype="text/javascript">jQuery.fn.rowspan=function(colIdx){//封装的一个JQuery小插件retu... <script type="text/javascript">

jQuery.fn.rowspan = function(colIdx) { //封装的一个JQuery小插件
return this.each(function(){
var that;
$('tr', this).each(function(row) {
$('td:eq('+colIdx+')', this).filter(':visible').each(function(col) {
if (that!=null && $(this).html() == $(that).html()) {
rowspan = $(that).attr("rowSpan");
if (rowspan == undefined) {
$(that).attr("rowSpan",1);
rowspan = $(that).attr("rowSpan"); }
rowspan = Number(rowspan)+1;
$(this).hide();
$(that).attr("rowSpan",rowspan+1);
} else {
that = this;
}
});
});
});
}
$(function(){
alert("aa");
$("#tb_list").rowspan(0);
$("#tb_list").rowspan(1);
$("#tb_list").rowspan(3);
$("#tb_list2").rowspan(0);
$("#tb_list2").rowspan(1);
$("#tb_list2").rowspan(3);
<%
response.setHeader("Content-disposition","attachment; filename=信用等级报告.xls");
%>
});

</script>
展开
 我来答
jamxval
推荐于2016-06-20 · TA获得超过6823个赞
知道大有可为答主
回答量:4308
采纳率:82%
帮助的人:1439万
展开全部
你似乎弄错了 HTTP 流程,怎么可以在已经开始输出资料到 Response 的 OutputStream /Writer 之后再来 response.setHeader() 呢,这会得到 IllegalStateException 无效状态错误。

出现在 JSP 中的非 <% %> 内的内容相当于 out.println(); 输出的。因此我们要么在最开始(前面连一个空格都没有)的位置<% %> 中准备 Header 内容。

Header 应该在准备写出实际内容之前完成,因为 out.println() 或 JSP 中的 HTML/CSS/JS 都是 Body 的内容, Header 应该在 Body 之前完成。HTTP 通信的过程是先是 URL 请求和状态码,然后是各种Header,再是一个空行隔开,再是BODY内容。这里说的 Body 不是指<body> 标签,连 <head> 标签都是 HTTP Body 的内容。

另外要知道 <% %> 的代码在服务器就已经计算后固定下来再送到客户端浏览器的,所以你在 js 运行的时候 <% %> 计算的任何文本值已经确定了,因为 js 是运行在客户端浏览器中的,这个时刻已经与服务器没有任何关系了。

如果你想下载这个文件的话,这个 Content-disposition 应该是由服务器来填充的,要知道在 js 中只是计算文件下载的 URL,真实的下载过程是另外再开一个 请求的 (新的 HttpServletRequest) 。而我们的 js 只需要计算出来文件下载的 URL 之后 window.open(...) 打开这个URL ,浏览器就会自动的弹出下载。
更多追问追答
追问

那有什么解决方案,我要对table用jquery进行优化成

优化完在进行下载

追答
你这个所谓优化是指什么,数据本身会在优化的过程上改变?如果是这样,一种方法是把优化后的数据发送回服务器再打开下载页面重新下载修改后的数据。另一种方法弹出一个新的 html 窗口时也可以把数据传过去,这样用户把这个弹出来的 html 文件保存就可以了。想让这个数据直接从客户端浏览器中变成一个 Excel 格式似乎有点困难而且只能在 Windows 下使用,
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式