weixin_42315864 2009-06-16 21:20
浏览 236
已采纳

请教在JSP页面先后提交两个form,总是出错的原因

因为JSP和Servlet、biz文件已经写好并运行了一段时间了,现在根据领导需要,要把网页上提交的数据的扫描件作为附件也提交到数据库(mssql server 2000)。
我不想对原来的文件作太大的修改,于是另外建立了一个document数据表。
在原来的JSP页面上先提交了原来的普通的form1,然后提交含有大文件(可能是Word、Excel或者jpg文件)的form2。
提交是在中做的。代码如下:
[code="ruby"]
form1.submit();
form2.submit();
[/code]
因为form2要从form1的Servlet的运行结果中取得数据(form1运行后的结果放到session中),所以form2必须在form1.submit()后面运行。
但提交到Servlet之后的结果却非常混乱、随机。有时干脆就不提交form1,有时提交了form1到Servlet之后,却只运行servlet开头的一两行代码,然后就提交Form2,运行form2的Servlet,运行完之后,再运行form1的余下的Servlet的代码。
搞了几天都解决不了。后来在QQ上问同学,有回复说可能是“同步”的问题,提交的两个表单同时提交了。
于是我在form2.submit();前面加上alert("在这里。");问题立刻得到解决。但这样运行很不方便、科学。
于是我又把alert("在这里。");改为setTimeout("form2.submit()",2000);
居然毫无作用。
现在改为:
[code="ruby"]
function submitForm1(){
form1.submit();
setTimeout("",1000);
submitForm2();
}
fucntion submitForm2(){
form2.submit();
}
就可以正常提交了。
但setTimeout("",1000);改为setTimeout("",5000);
居然又运行不了了。请问这是什么原因呢?
是不是几个form提交的时候,都是同时提交的呢?我应该怎么写才能正常地提交这两个form呢?
谢谢。
[b]问题补充:[/b]
请问lovewhzlq,setTimeout("(function(){})()",5000);中的"(function(){})()"是什么意思?
我还是想弄清楚到底是什么原因造成的运行错误,是不是就是同步的问题?

  • 写回答

7条回答 默认 最新

  • iteye_8658 2009-06-17 22:15
    关注

    我觉得你这样设计有问题。你form2提交要依赖form1的提交。如果不做特别处理的话,就像说的form2很可能比form1先处理,这依赖一定会出问题。你要是故意设置一个延迟,那和两个同时提交(就是合成一个大的Form),然后在服务器端进行相关处理,这样多方便! 我就不知道你为什么要设计成两个form,如果你把这个问题说清楚,我相信,可能大家会给出更好的意见。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

悬赏问题

  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 ubuntu系统下挂载磁盘上执行./提示权限不够
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码