如何在表单提交后继续运行执行?

时间:2010-07-03 09:29:44

标签: javascript

我正在为特定网站编写一个简单的表单提交功能。 该脚本填写当前页面上的特定表单并提交表单。它还必须填写第一个表格提交后出现的第二个表格,并提交此表格。

即有两种表格必须填写并提交。

然而问题是,在正常页面上脚本填充和第一个表单并提交它。提交后,脚本停止工作!我想继续执行!

我在有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;
}

3 个答案:

答案 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,网上还有更多。