页面加载的时候用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>
展开
 我来答
百度网友90999d9
推荐于2017-10-02 · TA获得超过485个赞
知道小有建树答主
回答量:172
采纳率:100%
帮助的人:181万
展开全部
<body onLoad="ck()">
你在页面加载完成后,就调用ck()这个 提交表单的方法,他当然反复的提交了。
页面加载完,调用了提交from的方法,form提交到后台,后台处理返回到这个页面,这个页面又加载完毕,又执行提交方法提交,又提交到后台,又返回.......死循环了.....
ck()方法 不放在onLoad里,单独放个按钮上的onclick上吧,那样只有点击按钮时提交,返回到当前页,你不点按钮也不会提交了
更多追问追答
追问
首先谢谢你的回答! 感觉你分析的很好!我现在需要的就是在这个页面加载时向后台提交一次请求拿点数据,这个页面是主页面的一个显示区的部分,不需要点击按钮!请问,我该怎么办?如何限制它不断提交?(我刚学这方面,不懂的很多有些人说用ajax,这个我更不会)
追答
那根据这个流程,你在afficheAction.do?action=7中,往request中设置一个变量,比如request.setAttribute("isRead","true"); ,然后在JSP页面中 获取 request.getAttribute("isRead");
判断能否获取到这个值,如果有值,表名是从 ACTION 回来的,,如果没有值,表名首次进入该页
陇圣人
2013-03-27
知道答主
回答量:8
采纳率:0%
帮助的人:8020
展开全部
我想这样可以!你可以在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;
}

有木有帮助?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
A354123417
2012-04-26 · TA获得超过1298个赞
知道小有建树答主
回答量:1610
采纳率:100%
帮助的人:330万
展开全部
你把js和form放一单独的页面 只用一个页面发送请求和接收数据是不行的 会造成死循环
追问
谢谢你的回答,我这样做是你说的意思吗?
把js写个单独文件,在这个jsp页面中引入,让后台的acton转向这个jsp页面,这样就不会循环了吧!
追答
还是会死循环  
我的意思是把
var isSubmit= ;//action中已经设置了request的这个属性
if(isSubmit!=false){
function ck(){
document.getElementById("formAfficheID").submit();
}
}

同时提出来放到一个单独的页面
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
隗萌7c
2012-04-26 · TA获得超过105个赞
知道答主
回答量:179
采纳率:100%
帮助的人:93.1万
展开全部
你这段代码 不就是不停提交的么 有错误还是怎么了啊?
追问
恩,肯定有错误,就是自己一时没分析出来!
追答
我不认为你把js拿出来就可以不死循环了  设置成一段时间提交一次的应该可以
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
陈静19901029
2012-04-26 · 超过13用户采纳过TA的回答
知道答主
回答量:119
采纳率:0%
帮助的人:45.7万
展开全部
那你就用ajax
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式