前段時間用到jquery上傳插件uploadify時,始終出現系統報出 http error 302 的錯誤。 網上大量搜集信息,基本上都是說session值丟失的問題,根據網友提供的解決方案進行修改,問題並沒有解決。 因此,不排除這是解決302錯誤的解決方法之一,但是我接下來提出另一解決方案,考慮 ...
前段時間用到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
------------------------------------------------------------------------------------------------------------------------------------------------