好的,我有表單驗證function.the函數運行通過表單驗證函數,如果該字段無效返回false。嘗試驗證ajax調用後的結果
的問題是,當它得到的是使用AJAX來檢查該字段爲有效的功能。
由於某種原因,它似乎並不「等待」 AJAX返回,並自動返回false。
有沒有辦法解決這個問題?
下面是代碼:
function form_validation(){
if (!NewValidationForm('pcode', 'Please fill in all the fields'))
return false;
if (!NewValidationForm('fname', 'Please fill in all the fields'))
return false;
if(!validate_coupon()){
alert("bad!!");
return false;
}
return true;
}
function validate_coupon(){
var url = $j("#site_url").val() + 'ajax_functions.php';
var coupon = $j("#pcode").val();
var result_status = false; // seem its jumps from here to:
$j.ajax({
type: "POST",
url: url,
data: { ajax: 'ajax', coupon: coupon}
}).success(function(insertID){
var obj = $j.parseJSON(insertID);
if(obj.status == 1){
result_status = true;
}
});
// straight over here
if(result_status == true){
return true;
}
}
_「出於某種原因」_--那會是因爲Ajax是異步的。 '$ .ajax()'調用立即返回是完全正常的,並且您的成功(或錯誤)回調稍後會被調用。你應該重構一下你的代碼,以便在你的Ajax成功處理程序完成成功驗證後,你想要做的任何事情。 – nnnnnn
這是怎樣的一個問題,我試圖讓人們提交表單僅當字段驗證,所以我做,直到真正從驗證函數返回它返回假的。我試圖提交表單時,Ajax調用返回但這似乎沒有工作 –