2013-09-24 118 views
1

我有一个叫做flagIt()的AJAX函数,它在另一个函数validateForm()内被调用。在提交时执行validateForm()Javascript函数不等待AJAX​​响应

function validateForm(){ 
    var error = ""; 
    //do stuff to validate form 
    if(error == ""){ 
     flagIt(); 
    }else{ 
     window.alert(error); 
     return false; 
    } 
} 

按照上面出现时,它会调用flagIt(),但随后让表单提交,而无需等待我的AJAX其内flagIt()进行响应。

如果我在flagIt()之后添加window.alert('something');它有时间来执行AJAX,并且所有的东西都能正常工作。

如何在强制功能validateForm()等待我的AJAX允许表单提交而不添加警报之前?

我试过return flagIt()

编辑

为了澄清,我不是在提交AJAX的形式。我正在更新数据库。

+5

您可以使用'异步:FALSE'在AJAX或'返回false;后''flagIt()',并提交表单在ajax的成功功能 – rps

+0

你的ajax功能在哪里,请显示代码。 – cbp

+2

异步... –

回答

1

只是添加到我的评论

您的代码不会在flagIt(),因为它的一个AJAX停止提交表单在阿贾克斯的成功的功能,这是异步

如果你想要它停在那里,并等待AJAX​​呼叫完成,你将不得不将async标志设置为false

xmlhttpp.open("GET",url,false);

是的,你可以调用SJAX

3

您可以使用async:false在AJAX或return false;flagIt()后,用document.myform.submit();

+0

我在'onreadystatechange'函数中尝试过'document.getElementById(“form2”)。submit();'但是由于某种原因它只是不提交表单。为什么会这样? –