2

我有一个名为 的 AJAX 函数flagIt(),它是从另一个名为 的函数中调用的validateForm()validateForm()在提交时执行。

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

如上所示,它将调用flagIt(),但随后允许表单提交,而无需等待来自我的 AJAX 的响应,该响应在flagIt().

如果我window.alert('something');在调用它之后添加一个flagIt()它有时间执行 AJAX 并且一切正常。

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

我试过了return flagIt()

编辑

澄清一下,我没有在 AJAX 中提交表单。我正在更新数据库。

4

2 回答 2

3

您可以async:false在 ajax 或return false;之后使用,flagIt()并使用 ajax 的成功函数提交表单document.myform.submit();

于 2013-09-24T09:15:37.157 回答
2

Just adding to my comment

Your code does not stop at flagIt() because its an AJAX , which is Asynchronous

If you want it to stop there and wait for the AJAX call to finish you will have to set the async flag to false

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

And yes, you can call that SJAX

于 2013-09-24T09:56:45.317 回答