页面加载的时候用Js函数将请求转发至Action,页面不断刷新,不断请求,后台不断返回数据的问题?

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>测试</title>
</head>
<script language="javascript">
var isSubmit= <%=request.getAttribute("isSubmit")%>;//action中已经设置了request的这个属性
if(isSubmit!=false){
function ck(){
document.getElementById("formAfficheID").submit();
}
}
</script>
<body onLoad="ck()">
<form id="formAfficheID" name="formAffiche" method="post"
action="afficheAction.do?action=7">
</form>
<%
List afficheList = (List) request.getAttribute("list");
System.out.println(afficheList);
%>

</body>
</html>

<body onLoad="ck()">
你在页面加载完成后,就调用ck()这个 提交表单的方法,他当然反复的提交了。
页面加载完,调用了提交from的方法,form提交到后台,后台处理返回到这个页面,这个页面又加载完毕,又执行提交方法提交,又提交到后台,又返回.......死循环了.....
ck()方法 不放在onLoad里,单独放个按钮上的onclick上吧,那样只有点击按钮时提交,返回到当前页,你不点按钮也不会提交了追问

首先谢谢你的回答! 感觉你分析的很好!我现在需要的就是在这个页面加载时向后台提交一次请求拿点数据,这个页面是主页面的一个显示区的部分,不需要点击按钮!请问,我该怎么办?如何限制它不断提交?(我刚学这方面,不懂的很多有些人说用ajax,这个我更不会)

追答

那根据这个流程,你在afficheAction.do?action=7中,往request中设置一个变量,比如request.setAttribute("isRead","true"); ,然后在JSP页面中 获取 request.getAttribute("isRead");
判断能否获取到这个值,如果有值,表名是从 ACTION 回来的,,如果没有值,表名首次进入该页

追问

懂你的意思了!非常感谢你的回答!我试下!再次感谢!

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-27
我想这样可以!你可以在action中执行查询之后,将查询结果放入request对象中,然后在jsp页面判断request中是否空,如果不空,执行js,如果空,跳过!
代码如下:
jsp页面中(引入struts2标签库)
<s:if test="#request.cdHouse_sxs==null">
<script type="text/javascript">
window.location = '${pageContext.request.contextPath}/cduser/cdUserAction_goindex.do(这是你请求的action)';
</script>
</s:if>

action中:先要获取request对象,自己知道的!

public String goindex()
{
//查询系统属性表
List<CdHouse_sx> cdHouse_sxs=cdHouse_sxService.findAllCdHouse_sx();
if(cdHouse_sxs!=null&&cdHouse_sxs.size()>0){
request.setAttribute("cdHouse_sxs", cdHouse_sxs);
return "goindex";
}
return null;
}

有木有帮助?
第2个回答  2012-04-26
你把js和form放一单独的页面 只用一个页面发送请求和接收数据是不行的 会造成死循环追问

谢谢你的回答,我这样做是你说的意思吗?
把js写个单独文件,在这个jsp页面中引入,让后台的acton转向这个jsp页面,这样就不会循环了吧!

追答

还是会死循环
我的意思是把
var isSubmit= ;//action中已经设置了request的这个属性
if(isSubmit!=false){
function ck(){
document.getElementById("formAfficheID").submit();
}
}

同时提出来放到一个单独的页面

第3个回答  2012-04-26
你这段代码 不就是不停提交的么 有错误还是怎么了啊?追问

恩,肯定有错误,就是自己一时没分析出来!

追答

我不认为你把js拿出来就可以不死循环了 设置成一段时间提交一次的应该可以

第4个回答  2012-04-26
那你就用ajax

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网