Я использую fullcalendar для представления событий моих участников сайта. Каждый может добавить собственное событие. Каждое событие должно иметь уникальный идентификатор, который я получаю с помощью SELECT INCREMENT (MAX ('id')) в PHP. Затем правильное var передается JavaScript, и вот проблема. Число присваивается функции fullcalendar renderEvent во второй попытке добавления нового события. Сначала нажмите на календарь, переменная пуста, как объявлено (в переменной namedEventId).
Вот мой код:
function showCalendar() {
var date = new Date();
var d = date.getDate();
var m = date.getMonth();
var y = date.getFullYear();
var newEventId = '';
$('#kalendarz').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month'
},
editable: false,
dayClick: function(e)
{
$.getJSON('/ajax/call/bands/AddEvent', function(data) {
newEventId = data.dane;
});
console.log(newEventId); // <- empty, then with ID at second click...
$("#kalendarz").fullCalendar('renderEvent',
{
title: 'Termin zajęty',
start: e,
id: newEventId
});
},
});
}
В чем проблема? Функция renderEvent не ждет, когда getJSON завершит работу? Могу ли я это исправить?
$ .getJSON - AJAX, AJAX - асинхронный! –
Исправление состоит в том, чтобы перестроить ваш скрипт, чтобы разрешить асинхронный вызов Ajax. Независимо от того, что вы хотите сделать после того, как '$ .getJSON()' должен быть в функции, вызванной из обратного вызова '$ .getJSON()'. – nnnnnn