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 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用