2016-02-09 4 views
0

Я ява/JQuery новичок и борется со следующим:не может предотвратить Submit на основе проверки АЯКС

$(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(); } 
}); 

});

Настройка сеанса возвращается в порядке, и отображается предупреждение. Но я также хочу запретить отправку формы, если параметр сеанса возвращен = «Вкл». Этого не происходит. Очевидно, что-то я не понимаю, никаких советов?

+1

Возможный дубликат [Как вернуть ответ от асинхронного вызова?] (Http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an -асинхронный вызов) –

ответ

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 == 'Вкл', но не отправляет, если res! == 'Вкл.'. Консоль говорит: «Uncaught TypeError: form.submit не является функцией» – labbetuss

+0

У вас есть кнопка с именем/id как 'submit' в вашей форме ... если так переименовать кнопку –

+0

Действительно, у меня было несколько из них только что протестировано хорошо, спасибо! – labbetuss