提交两个form表单

最近,自己做项目遇到这样一个问题就是在维护项目的时,需要增加新的表单,而在增加新的表单的同时只有一个提交按钮 这就意味着一个按钮要同时提交两个form表单。这个,以前都没有遇到过,于是找google,有两种解决方案(不过没有示例):
1.通过iframe

先让第一个表单提交到该iframe,把第一个表单的target指向iframe的name。再在iframe中通过JavaScript提交第二个表单

2.利用ajax

这个其实很容易理解,即通过form1的特有的onsubmit()提交事件(也可以用onclick()),在js里写ajax把form2通过ajax异步请求到服务器,提交form2,完成两个form的提交。(jsp页面中只有一个提交按钮一个form表单,即form1,而form2不用写在jsp中)

下面讲一下第二种方式提交表单(struts1):
function sureSave(){

var url = 'paramSetup.do?operate=updateParamSetup';
if(window.XMLHttpRequest) {
req = new XMLHttpRequest();
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
}
req.open("GET", url, true);
req.onreadystatechange = callback;
req.send(null);

alert('保存成功!');
location.reload();
}

function callback() {
if(req.readyState == 4) {
if(req.status == 200) {
var msg = req.responseXML;
//alert(msg);
}
}
}

}

<form name="form1" action="portConfig.do?operate=updateParamSetup2" method="post"

οnsubmit="return sureSave()">


...


<input name="submit" type="submit" value="保存"/>

</form>

这其中有一个小问题,不指定大家有没有发现。就是两个表单是form1开始提交,form2因为是ajax的异步提交,所以会花费一点时间,结果是边提交页面边刷新(location.reload();),提交form2的时候提交和刷新相互交错,最后提交刷新后的网页是没有完全刷新的,这不是我们想要的结果。于是,我想到Java的线程,在form2所对应的anction的显示网页的那个方法中添加:(大家有更好的方法也可以提出交流)

try { 

Thread.sleep ( 50 ) ; 

} catch (InterruptedException ie){
ie.printStackTrace();
}
也就是说ajax异步访问服务器到返回信息浏览器的时间只要50微秒(因机而异),从中可以看出ajax的速度还是挺快的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值