2013-04-08 90 views
0

有一个表单用户填写并单击提交按钮。数据被发送回服务器,并根据服务器服务器的响应提交或不提交表单(并且页面被重定向或不重定向)。问题是表单总是提交并且页面在收到服务器响应之前重定向。表单提交确定Ajax响应

 function SubmitForm(name, data1) 
     { 
      var result; 
      var checkResult = function(result) 
      { 
       alert("final value is: "+result) 
       return result 
      } 
      var xmlhttp 
      if (window.XMLHttpRequest) 
      {// code for IE7+, Firefox, Chrome, Opera, Safari 
       xmlhttp=new XMLHttpRequest(); 
      } 
      else 
      {// code for IE6, IE5 
       xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
      xmlhttp.onreadystatechange=function() 
      { 
       if(xmlhttp.readyState == 4 && xmlhttp.status == 200) 
       { 
        if(xmlhttp.responseText) 
        { 
         result = true 
        } 
        else 
        { 
         document.getElementById("report").innerHTML = "blah blah blah" 
         result = false 
        } 
        checkResult(result) 
       } 
      } 
      xmlhttp.open("POST", "Checkdata1.php", true); 
      xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded") 
      xmlhttp.send("name="+encodeURIComponent(name.value)+"&data1="+encodeURIComponent(data1.value)) 
      //return false 
     } 

下面是调用上述JavaScript函数的表单的HTML。

<form onsubmit="return isPasswordCorrect(document.getElementById('name'), document.getElementById('txtField1'))" action="nextpage.php" method="GET"> 

我知道这个想法是返回false以防止提交表单的功能,但我怎么得到它等待足够长的服务器通过Ajax回复?顺便说一下,我不需要JQuery,如果没有必要,我现在不想开始使用它。

回答

1

我会用一个<button>不提交表单(该类型不是"submit"):

<form ...> 
... 
<button onclick="SubmitForm(...)">Submit</button> 
</form> 
SubmitForm

然后,你就可以把:

document.querySelector("form").submit(); 

当你想提交表格。