В моей функции переменная weekDaysDisabled
отображается до того, как один или несколько вызовов AJAX увеличили ее.Насколько я понял, я должен использовать обратные вызовы, но я пробовал все способы, но я просто не могу преобразовать свою функцию.
Можете ли вы помочь мне?Огромное спасибо
Имея в виду также, что переменная "count" указывает, сколько раз функция ajax давала мне номер для позиции объекта 1.
function nextWeek(flag) {
var date = new Date($('#displayWeekDate').val());
if (flag == 1) { // Next week
$('#leftArrowAgenda').removeClass('passiveLeftArrowAgenda');
$('#leftArrowAgenda').addClass('activeLeftArrowAgenda');
date.setDate(date.getDate() + 7);
} else {
if (flag == -1) { // Previous week
date.setDate(date.getDate() - 7);
} else { // Current week
date.setDate(date.getDate());
}
}
if (flag == -1 && ('#leftArrowAgenda').hasClass('passiveLeftArrowAgenda')) {
return;
}
dateString = date.toISOString().substring(0, 10);
$('#displayWeekDate').val(dateString);
var currentDate = new Date();
currentDateString = currentDate.toISOString().substring(0, 10);
if (flag == -1 && dateString == currentDateString) {
$('#leftArrowAgenda').removeClass('activeLeftArrowAgenda');
$('#leftArrowAgenda').addClass('passiveLeftArrowAgenda');
}
var dataSlot = 0;
var flSlot = 0;
var count = 0;
var weekDaysDisabled = 0;
var startOfWeek = moment(date).startOf('isoWeek');
for (var i = 1; i < 6; i++) {
flSlot = 0;
if (i == 1) {
dataSlot = startOfWeek;
} else {
dataSlot = startOfWeek.add(1, 'days');
}
if (some test) {
flSlot = 1;
weekDaysDisabled++;
}
if (flSlot == 0) {
var dataAppuntamento = moment(dataSlot).format("YYYY-MM-DD");
var idprof = $('#prof').val();
$.ajax({
url: 'php/slotAgenda.php',
type: 'POST',
data: {
numSlot: i,
dataAppuntamento: dataAppuntamento,
idprof: idprof
},
dataType: 'html'
}).done(function(data) {
var obj = JSON.parse(data);
if (isNaN(obj[1])) {
count++;
if (count == 1 && flag == 0) {
some code
}
} else {
weekDaysDisabled++;
}
}).fail(function() {
alert('Si è verificato un errore, riprova...');
});
}
}
alert(weekDaysDisabled);
}