Я пытаюсь отправить POST скрипту PHP без использования формы. Функция работает правильно, кроме собственно почтовой части.jQuery Отправить POST без формы
Может ли кто-нибудь увидеть, что должно быть неправильно с тем, что я здесь делаю?
function checkforRates(){
alert('activated');
//FUNCTION CHECKS FOR RATES FOR EACH OF THE ICPS IN LATEST CONTRACT
var count = $("#selectICP").children("option:not([disabled])").length;
success = 0
$('#selectICP option:not([disabled])').each(function() {
opICPs = $(this).val();
$.ajaxSetup({
type: 'POST',
URL: 'functions/workforce_newcontract.php',
data: {'checkrates': 'true', 'ICP': opICPs, 'ctype': ctype},
//data: '?checkrates=true&ICP=' + opICPs + '&ctype=' + ctype,
success: function(result) {
if(result == 1){
//THIS ICP HAS ALL METERS AND ENGINES WITH RATES
success = success + 1;
} else {
$('#contract_window_message_error_mes').html(result);
$('#contract_window_message_error').fadeIn(300).delay(3000).fadeOut(700);
return false;
}
},
error: function() {
$('#contract_window_message_error_mes').html("An error occured, the form was not submitted.");
$('#contract_window_message_error').fadeIn(300).delay(3000).fadeOut(700);
}
});
if(success === count){
//CONTINUE ONTO NEXT STAGE
alert('Success!');
}
});
}
Большое спасибо.
Что не работает, есть ли ошибки в консоли? – tymeJV
Похоже, вы попадаете в ловушку асинхронного javascript. Я считаю, что весь ваш код работает, но ваш оператор if работает до завершения ajax. Вы должны поместить несколько console.log в свой метод успеха ajax. Если вы можете сказать, что ajax работает не так, как ожидалось, укажите, что будет выводить вывод debug console.log. – TheThirdOne
$ .ajaxSetup НЕ будет делать вызов AJAX, он просто подготовится к будущему звонку AJAX. Попробуйте изменить его на $ .ajax() и снова запустите. Кроме того, AJAX является асинхронным. Я не думаю, что он может закончить раньше, чем «if (success === count)» сразу после разговора. –