解决方案 »

  1.   

    可以用  ajax error   把错误信息弹出来$.ajax({
        success: function(data){
             
        },
        error: function(XMLHttpRequest, textStatus, errorThrown){
            alert(XMLHttpRequest.readyState + XMLHttpRequest.status + XMLHttpRequest.responseText);
        }
    });
      

  2.   

    可是如果使用ajax的方式请求,导出的excel就不会提示下载,而是而是直接返回到success函数里面了。
      

  3.   

    那 比如A系统导出时要去请求B系统,如果请求超时,你怎么提示用户下载失败呢!而且web请求是单线程的。如果请求过程中,我切换了页面,其实这个就是导出失败的,我怎么样做这种提示呢
      

  4.   

    这个在项目中做过,针对下载的请求是单一的,所以可以分两步,写一个专门用于下载文件的action,里面专门用于下载文件,第一次用ajax请求到action用于生成excel(这里只是生成excel不涉及下载)生成好的excel写入到ByteArrayOutPutStream可以放在session中,session中存放的可以用一个对象,这个对象里面存放excel乃至任何文件的文件名,文件流(这里文件流的输入流,用于后面的struts2下载action使用),以及文件的类型。
    用response的方式返回生成成功或失败信息,ajax就可以接收生成的结果,如果生成成功,再去请求下载action,下载这个excel(此时就是struts2的文件下载了),如果失败了ajax直接alert出来就行了
      

  5.   

    楼上说的对。
     response.reset();
        OutputStream os = response.getOutputStream();
        response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
    response.setContentType("application/octet-stream");

     
        os.write(xxxxx);
     
    os.close();