今天碰到一个在firefox下swfupload 上传时session不一致问题
在一个项目遇到多文件上传时,firefox下,服务器端的session获取不一致问题。
解决办法:
解决办法:将sessionID传过去!
js里:
url='/fileupload/main/fileuploadnew?'+document.cookie.split("; ")[0]
document.cookie.split("; ")[0]为sessionid,为什么这么写,看下文。
java后台:
String sessionId = request.getParameter("sessionid");
随之而来的问题是如何通过javascript获取cookie里面的一个值。 那么我们先来看看cookie到底长什么样子呢? 直接在浏览器地址栏输入: javascript:alert(document.cookie); 回车。(这行代码的意思是,让浏览器执行javascript语句: alert(document.cookie);) 结果是:uin=webryan; sessionid=10293123834; pgv_send=1; cur_page=index
这个样子。 注意:1.开始没有空格,2.分号后又空格 3.最后没有分号。那么我们获取cookie的方法就比较明确了。。
一种是用document.cookie.split(“; “)的方式把字符串分割成几个段,然后遍历整个数组。 把每个数组单元等号左边的和name对比是否相等,相等则取等号右边的值。
1 function getCookie(name){ 2 var arr = document.cookie.split("; "); 3 for(var i=0,len=arr.length;i<len;i++){ 4 var item = arr[i].split("="); 5 if(item[0]==name){ 6 return item[1]; 7 } 8 } 9 return""; 10 }
function getCookie(name){ var arr = document.cookie.split("; "); for(var i=0,len=arr.length;i<len;i++){ var item = arr[i].split("="); if(item[0]==name){ return item[1]; } } return""; }
1 function getCookie(name){ 2 var arr = document.cookie.split("; "); 3 for(var i=0,len=arr.length;i<len;i++){ 4 var item = arr[i].split("="); 5 if(item[0]==name){ 6 return item[1]; 7 } 8 } 9 return ""; 10 }
第二种就是直接在字符串中搜索关键字。由于分号有空格,加上防止出现搜索cookie name为“str”的value是,有一个test_str的cookie名称。这里我们先进行一次过滤。 然后在找到 ;str的位置,这样就不会出问题。具体情况如下
1 function getCookie(name){ 2 var value=""; 3 var cookie = ";"+document.cookie.replace(/;\s+/g,";")+";" 4 var pos = cookie.indexOf(";"+name+"="); 5 if(pos>-1){ 6 var start = cookie.indexOf("=",pos); 7 var end = cookie.indexOf(";",start); 8 value = unescape(cookie.substring(start+1,end)); 9 } 10 return value; 11 }
1 function getCookie(name){ 2 var value=""; 3 var cookie = ";"+document.cookie.replace(/;\s+/g,";")+";" 4 var pos = cookie.indexOf(";"+name+"="); 5 if(pos>-1){ 6 var start = cookie.indexOf("=",pos); 7 var end = cookie.indexOf(";",start); 8 value = unescape(cookie.substring(start+1,end)); 9 } 10 return value; 11 }
1 function getCookie(name){ 2 var value=""; 3 var cookie = ";"+document.cookie.replace(/;\s+/g,";")+";" 4 var pos = cookie.indexOf(";"+name+"="); 5 if(pos>-1){ 6 var start = cookie.indexOf("=",pos); 7 var end = cookie.indexOf(";",start); 8 value = unescape(cookie.substring(start+1,end)); 9 } 10 return value; 11 }