注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

IOS & JAVA KEY

(iMilo)

 
 
 

日志

 
 
关于我

All the splendor in the world is not worth a good friend!! Hello my friend!!

网易考拉推荐

关闭窗口清除Session中的内容  

2010-08-08 00:06:08|  分类: JavaScript |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

引言:今天周末没事,就想起前面自己做的一个B2C的电子商务平台,还有些一些地方没有完善,就想着完善,嗯,问题是这样的,在电子商务平台中有这样一个场景,我将购物车放置在Session中,使其在整个购物的过程中都能从Session中得到购物车模型,我在购物车某型中有的商品都会在数据库中减少其购物车中购买的数量,但是如果我关闭窗口,怎样让Session中的购物车模型中的商品数量添加到数据库中,于是我查找了GOOGLE、百度,得到的第一个提示,就是:关闭窗口自动清除Session,于是找到的第一个方法就是在<body>标签使用onunload属性,调用某个js如:<body onunload=”close()”>该方法是关闭窗口时触发close()事件,于是我就可以在close()方法中定义删除Session的方法……

         但是事实不是这样的,当你刷新这个页面,以及点击这个页面上的链接时onunload都会触发,于是我又在GOOGLE,百度中查找:得到的答案如下:

<script>
window.onunload = function(){if(self.screenTop>9000)alert('
该窗口已经被关闭!')}
</script>

<script>
window.onunload = function(){if(self.screenLeft>9000)alert(
该窗口已经被关闭!.')}
</script>

说明:

window.screenTop

获取浏览器客户区左上角相对于屏幕左上角的 y 坐标

screenTop>后面的数字必须大于你显示分辩率中的高度

比如,800*600, 这个数得大于600

window.screenLeft

获取浏览器客户区左上角相对于屏幕左上角的 x 坐标

screenLeft>后面的数字必须大于你显示分辩率中的宽度

比如,800*600, 这个数得大于800

 

通常这两个值设为9000

于是我使用上面的方法,实现了只有在关闭页面才触发onunload事件。

 

总结:

    当使用onunload属性时,你可以使用Ajax来清除Session,也可以使用window.location.href来触发某个请求,比如我在这个用的是struts2我可以用<body onunload=”javascript:window.location.href-‘${pageContext.request.contextPath }/cart/closeWindow.action’” >

然后有closeWindow.action这个请求去处理Session中购物车的商品,让其数量添加到数据库中;

    在此处我也有Ajax来处理请求,但是事实上我们只要处理Session,并不要处理完Session后有任何返回的异步信息,所以我还是使用的触发一个请求的方法,最终的写法如下:

<body

onunload="javascript:if(self.screenTop>9000) window.location.href='${pageContext.request.contextPath }/cart/closeWindow.action';">

 

遗留问题,一般Session会在系统为访问上30分钟后消失,也就是Session失效,但是这样并没有将商品库存更新,这个问题还有待解决,嗯不早了希望明天解决。

  评论这张
 
阅读(5687)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017