2013-09-24 119 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();'但是由於某種原因它只是不提交表單。爲什麼會這樣? –