Полный календарь динамических рабочих часов на выбор AJAX - PullRequest
0 голосов
/ 31 декабря 2018

Мне нужно установить рабочие часы на основе определенного идентификатора, установленного опцией выбора.Я также использую тот же выпадающий список для обновления событий для этого конкретного идентификатора.

AJAX работает нормально, однако я не могу установить параметры динамически, хотя события отображаются правильно.Вот мой код.

$('#select').change(function() {

var events = {
    url: "cal/load.php",
    type: 'POST',
    data: {
        id: $(this).val()
    }
}
var bizHours = "";
$.ajax({
    type: 'POST',
    url: 'test.php',
    data: {id:$(this).val()},
    success: function(data)
    { 
      bizHours = data;
      }
  })

$('#calendar').fullCalendar('option', {
businessHours: bizHours

});

$('#calendar').fullCalendar('removeEventSource', events);
$('#calendar').fullCalendar('addEventSource', events);
$('#calendar').fullCalendar('refetchEvents');
}).change();

Это возвращение из test.php:

[{"dow":"1","start":"10:00:00","end":"18:00:00"},
 {"dow":"2","start":"10:00:00","end":"18:00:00"},
 {"dow":"3","start":"10:00:00","end":"18:00:00"},
 {"dow":"4","start":"09:00:00","end":"17:00:00"},
 {"dow":"5","start":"09:00:00","end":"17:00:00"}]

Если я установлю его вручную следующим образом:

$('#calendar').fullCalendar('option', {
businessHours: [{"dow":"1","start":"10:00:00","end":"18:00:00"}
.....
});

Тогдаэто нормально, я думаю, что переменная bizHours не устанавливается.Как я могу обновить свои рабочие часы на основе этого выбора?

Обновление : Переместив функции в функцию успеха из-за асинхронной природы AJAX, он все еще имеет тот же эффект,рабочие часы не обновляются.

Вот обновленный код:

$('#learn-ins').change(function() {

var events = {
    url: "cal/load.php",
    type: 'POST',
    data: {
        id: $(this).val()
    }
}
bizHours = "";
$.ajax({
    type: 'POST',
    url: 'test.php',
    data: {id:$(this).val()},
    success: function(data)
    { 
      bizHours = data;
$('#calendar').fullCalendar('option', { businessHours: bizHours });
$('#calendar').fullCalendar('removeEventSource', events); 
$('#calendar').fullCalendar('addEventSource', events); 
$('#calendar').fullCalendar('refetchEvents');
      }
  });
});

test.php возвращает правильный JSON, я добавил его в консоль, чтобы увидеть значения.

...