我正在为特定网站编写一个简单的表单提交功能。 该脚本填写当前页面上的特定表单并提交表单。它还必须填写第一个表格提交后出现的第二个表格,并提交此表格。
即有两种表格必须填写并提交。
然而问题是,在正常页面上脚本填充和第一个表单并提交它。提交后,脚本停止工作!我想继续执行!
我在有2帧的页面上错误地完成了它!大多数页面都没有框架!
function FillFirstForm(){
doc=document;
//Some code removed from above...Fill Values
doc.forms[0].name.value = answerarray[1];
doc.forms[0].address.value = answerarray[2];
doc.forms[0].phone.value = answerarray[3];
doc.forms[0].username.value = answerarray[4];
//And Press Button
doc.forms[0].submit.click();
iTimer=setInterval(FillSecondForm,5000);
return true;
}
function FillSecondForm(){
clearInterval(iTimer);
doc.forms[0].tags.value = answerarray[5];
doc.forms[0].reference.value = answerarray[6];
document.forms[0].submit.click();
return true;
}
答案 0 :(得分:2)
基本规则是经典表单提交会停止页面脚本的所有执行,并加载下一页。没办法对此做任何事情。
您可能必须切换到使用Ajax发送表单的内容。这将使当前页面保持活动状态,并允许您根据需要进行任意数量的提交。
实现这一目标的一个非常简单的方法是jQuery form plugin。这需要花费大量的手动麻烦。
答案 1 :(得分:0)
首次提交表单后,您是否可以在第二种表单的正文加载上调用FillSecondForm()函数。
答案 2 :(得分:0)
您可以使用AJAX发布第一个表单,然后在收到第一个表单的响应后提交第二个表单。
或许这样的事情:
function FillFirstForm() {
var post_data = 'name='+escape(answerarray[1]);
post_data += '&address='+escape(answerarray[2]);
post_data += '&phone='+escape(answerarray[3]);
post_data += '&username='+escape(answerarray[4]);
// TODO: make this cross browser :)
var req = new XMLHttpRequest();
req.onreadystatechange = function() {
if ( req.readyState == 4 ) { // The request has finished
if ( req.status == 200 ) {
FillSecondForm();
}
else {
// Deal with errors here
}
}
};
req.setRequestHeader("Content-type","application/x-www-form-urlencoded");
req.open('POST', '/submit_url', true);
req.send(post_data);
}
W3学校在这里有一个关于AJAX的教程:http://www.w3schools.com/ajax/ajax_xmlhttprequest_create.asp,网上还有更多。