用jQuery的ajaxSumbit提交表单
首先下载jquery.form.js 
在成功后取消load加载
/**
 * 附件下载
 * @param e_id
 */
$("#form1").ajaxSubmit({
            type: "post",
            url: url,
            dataType: "json",
            success: function (data) {
             这里取消显示的loading
            },error: function (msg) {
                alert(msg);    
            }
});
}

解决方案 »

  1.   

    感谢 EverWHL的回复,
    我刚试了一下,用这种方法没有弹出保存文件下载框!只返回了一大串字符
      

  2.   

    java代码
    返回空就行了/**
     * 下载
     * @param request
     * @param response
     * @return
     * @throws Exception
     */
    @RequestMapping("/fileDownload.controller")
    public ModelAndView fileDownload(HttpServletRequest request, HttpServletResponse response) throws Exception{
    ReturnMsg returnMsg = new ReturnMsg();
    String e_id = StringUtil.trimStr(request.getParameter("e_id"));
    returnMsg=FileDownTool.download(e_id,response, request);
    return null ; 
    }
      

  3.   

    下载方法给你参考下/**
     * 下载
     * @param ID
     * @param response
     * @param request
     * @return
     */
    public static ReturnMsg download(String ID,HttpServletResponse response,HttpServletRequest request){
    ReturnMsg returnMsg = new ReturnMsg();
    try {
    response.setContentType("application/x-msdownload");
    FileDownTool sdf=new FileDownTool();
    Map<String,Object> map=sdf.getPath(ID);
    String filePath=map.get("annex_address").toString();
    String fileName=map.get("annex_name_old").toString();
    File file = new File(filePath);
    if (file.exists() && file.isFile()){
    String agent = request.getHeader("User-Agent");
    boolean isMSIE = (agent != null &&  (agent.indexOf("MSIE") != -1 || agent.indexOf("rv") != -1));
    if (isMSIE) {
    fileName = URLEncoder.encode(fileName, "UTF-8");
    } else {
    fileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");
    }
    response.setHeader("Content-Disposition", "attachment; filename=" + fileName );
    InputStream is = new FileInputStream(new File(filePath));
    OutputStream os = response.getOutputStream();
    int flag = 0;
    byte[] buff = new byte[1024*4];
    try{
    while((flag = is.read(buff, 0, buff.length))!=-1){
    os.write(buff, 0, flag);
    }
    os.flush();
    is.close();
    os.close();
    Message message = new Message();
    message.setMsgRe("下载成功!");
    returnMsg.setSuccessMessage(message);
    return returnMsg;

    }catch(Exception e){
    Message message = new Message();
    message.setMsgRe("资源下载失败!");
    returnMsg.setSuccessMessage(message);
    return returnMsg;
    }
    }else{
    Message message = new Message();
    message.setMsgRe("你访问的资源不存在!");
    returnMsg.setFailMessage(message);
    return returnMsg;
    }
    } catch (Exception e) {
    Message message = new Message();
    message.setMsgRe("你访问的资源不存在!");
    returnMsg.setFailMessage(message);
    return returnMsg;
    }
    }
      

  4.   

    我想了下,咱两的情况不一样我是ajaxsumbit后还是走了widows.href
    所有你可以这样
      给你个思路,在下载的时候先把load加载提示出来,
      然后走你后台代码的时候,再返回到你当前的页面,laod加载肯定就没了
      

  5.   

    非常感谢EverWHL的热心帮忙!
    我现在的实现方法是在第一次提交的时候加载loading,然后弹出下载框,然后再加载 一次空的ajax提交,返回值是error,在error处把loading和遮罩再次隐藏!