ajax和iframe的使用遇到的问题
在公司做的不是web软件,一直想自己学习并锻炼自己。
这几天有空就写自己的一个web小系统,感觉第一次写的界面太丑了,就打算这次用ajax提高用户体验,在网上当了一个页面后就打算用一个页面做一个系统。
通过四五天的努力,写了一个模块,貌似没发现功能上的问题。然后突然想看看用户session过期时提交一个请求时能不能完成老版本的功能,原来功能如下:提交请求后发现没登录,会先跳转到用户登录页面,然后成功登陆后自动执行之前没执行的请求,和淘宝网的实现一样。结果竟然不行。关键代码如下:
<%String contextPath = request.getContextPath();String basePath = request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort()+ contextPath + "/";RedirectBean bean = (RedirectBean) request.getAttribute("redirectBean");String method = "POST";String requestName = "homePage.action";if (bean != null) {method = ComUtil.changeNullVal(bean.getRequestWay(),method);requestName = ComUtil.changeNullVal(bean.getRequest(),requestName);}%><head><base href="<%=basePath%>"/><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>RedirectPage</title></head><!-- <body onload="document.getElementById('autoform').submit();"> --><body><form id="autoform" action="<%=requestName %>" method="<%=method%>" target="_top">跳转中....<%if (bean != null) {Iterator<SimpleEntry> it = bean.iterator();while (it.hasNext()) {SimpleEntry en = it.next();%><input type="hidden" name="<%=en.getName()%>" value="<%=en.getValue()%>" /><%}}%></form><script type="text/javascript">document.getElementById('autoform').submit();</script></body><div id="target"></div>写到主框架页面的这个div标签中,这个时候应该是自动提交表单的,但是竟然没有跳转!!!然后我发现这个语句
<body onload="document.getElementById('autoform').submit();"> 是不是和主框架页面的某些东西冲突了,onload事件不起作用。果然如此,神奇的javascript,我突然感觉onload事件没什么用,因为我在页面底部如下方法代替就可以执行脚本了,<script type="text/javascript">document.getElementById('autoform').submit();</script>效果和onload是一样的,页面也约等于load完成了。target="_top",OK,这样这个跳转页面在iframe里提交,就不会和主框架页面冲突了,而且还能跳出iframe提交,也使整个框架页面都返回登录页面。