2016-02-09 46 views
0

我一個java/jQuery的新手和掙扎如下:不能阻止基於提交AJAX檢查

$(document).ready(function() { 
//Prevent SUBMIT if Session setting = On (Ajax) 
$('#formID').submit(function(e) { 
    var prevent = false; 
    $.ajax({ 
     type: "POST", 
     url: "url/to/ajax_file.php", 
     cache: false, 
     success: function(res){ 
      if(res == "On") { alert('Session is ON so submit should be prevented'); prevent = true; } 
     } 
    }); 
    if (stop2) { e.preventDefault(); } 
}); 

});

會話設置返回OK,並提出警告。但是,如果會話設置返回='開',我也想阻止表單提交。這沒有發生。顯然有一些我不明白,有什麼建議?

+1

的[我如何返回從一個異步調用的響應?(可能的複製http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an -asynchronous-call) –

回答

3

你不能這樣做,因爲的Ajax請求的異步特性,而不是在提交處理您需要直接阻止默認的行動,那麼在AJAX處理您可以通過編程提交表單。

$(document).ready(function() { 
    //Prevent SUBMIT if Session setting = On (Ajax) 
    $('#formID').submit(function(e) { 
    e.preventDefault(); 
    var form = this; 
    $.ajax({ 
     type: "POST", 
     url: "url/to/ajax_file.php", 
     cache: false, 
     success: function(res) { 
     if (res == "On") { 
      alert('Session is ON so submit should be prevented'); 
     } else { 
      form.submit(); 
     } 
     } 
    }); 
    }); 
}); 
+0

謝謝!如果res =='On'則阻止提交,但如果res!=='On'則不提交。控制檯說:「遺漏的類型錯誤:form.submit是不是一個函數」 – labbetuss

+0

你有一個名爲/ ID爲'在你的形式submit'按鈕......如果這樣命名按鈕 –

+0

事實上我有幾個人,只是測試好,謝謝! – labbetuss