页面加载的时候用Js函数将请求转发至Action,页面不断刷新,不断请求,后台不断返回数据的问题?
<html><head><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"><title>测...
<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> 展开
<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> 展开
5个回答
展开全部
<body onLoad="ck()">
你在页面加载完成后,就调用ck()这个 提交表单的方法,他当然反复的提交了。
页面加载完,调用了提交from的方法,form提交到后台,后台处理返回到这个页面,这个页面又加载完毕,又执行提交方法提交,又提交到后台,又返回.......死循环了.....
ck()方法 不放在onLoad里,单独放个按钮上的onclick上吧,那样只有点击按钮时提交,返回到当前页,你不点按钮也不会提交了
你在页面加载完成后,就调用ck()这个 提交表单的方法,他当然反复的提交了。
页面加载完,调用了提交from的方法,form提交到后台,后台处理返回到这个页面,这个页面又加载完毕,又执行提交方法提交,又提交到后台,又返回.......死循环了.....
ck()方法 不放在onLoad里,单独放个按钮上的onclick上吧,那样只有点击按钮时提交,返回到当前页,你不点按钮也不会提交了
更多追问追答
追问
首先谢谢你的回答! 感觉你分析的很好!我现在需要的就是在这个页面加载时向后台提交一次请求拿点数据,这个页面是主页面的一个显示区的部分,不需要点击按钮!请问,我该怎么办?如何限制它不断提交?(我刚学这方面,不懂的很多有些人说用ajax,这个我更不会)
追答
那根据这个流程,你在afficheAction.do?action=7中,往request中设置一个变量,比如request.setAttribute("isRead","true"); ,然后在JSP页面中 获取 request.getAttribute("isRead");
判断能否获取到这个值,如果有值,表名是从 ACTION 回来的,,如果没有值,表名首次进入该页
展开全部
我想这样可以!你可以在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;
}
有木有帮助?
代码如下:
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;
}
有木有帮助?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你把js和form放一单独的页面 只用一个页面发送请求和接收数据是不行的 会造成死循环
追问
谢谢你的回答,我这样做是你说的意思吗?
把js写个单独文件,在这个jsp页面中引入,让后台的acton转向这个jsp页面,这样就不会循环了吧!
追答
还是会死循环
我的意思是把
var isSubmit= ;//action中已经设置了request的这个属性
if(isSubmit!=false){
function ck(){
document.getElementById("formAfficheID").submit();
}
}
和
同时提出来放到一个单独的页面
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你这段代码 不就是不停提交的么 有错误还是怎么了啊?
追问
恩,肯定有错误,就是自己一时没分析出来!
追答
我不认为你把js拿出来就可以不死循环了 设置成一段时间提交一次的应该可以
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
那你就用ajax
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询