jquery上传插件uploadify 报错http error 302 解决方法之一

时间:2024-01-21 21:25:51

前段时间用到jquery上传插件uploadify时,始终出现系统报出 http error 302 的错误。

网上大量搜集信息,基本上都是说session值丢失的问题,根据网友提供的解决方案进行修改,问题并没有解决。

因此,不排除这是解决302错误的解决方法之一,但是我接下来提出另一解决方案,考虑到异步传输的问题,供大家参考(反正我是成功了)。

首先是uploadify初始化

$(function() {
           $('#projectfile').uploadify({
              'swf'      : '${ctxStatic}/scripts/jqext/uploadify/uploadify.swf',
              'uploader' : '${ctx}/utmmanager/utm/insert',

//session的方案,就是在此uploader的值中添加:JSESSIONID=${pageContext.session.id},

'auto'  : true,               并且增加一行'formData' :{'JSESSIONID':"${pageContext.session.id}"},
              'buttonText' : '导入',
              'multi'    : false,
              'fileObjName' : 'file',
              'method'   :'post',
              'onUploadSuccess' : function(file,data,response) {
                 var json_data=eval("("+data+")");    
                 alert("<br>成功导入条目数:"+json_data.successLen+"<br>失败导入条目数: //此处需要返回的是json数据,

"+json_data.errorLen+"<br>导入失败条目:<br>"+json_data.errorData);     不是跳转路径。具体看下面分析。
              },
              'onUploadError' : function() {
                  alert("失败");
               }        
          });
      });

其次是Controller方法:

  需要添加@ResponseBody

      @responsebody表示该方法的返回结果直接写入HTTP response body中,一般在异步获取数据时使用。

在使用@RequestMapping后,返回值通常解析为跳转路径,加上@responsebody后返回结果不会被解析为跳转路径,

而是直接写入HTTP response body中。比如异步获取json数据,加上@responsebody后,会直接返回json数据。

  作用:

该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,

写入到Response对象的body数据区。

  时机:

返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用;

Chocoo

2016.4.18

------------------------------------------------------------------------------------------------------------------------------------------------