我正在使用fullcalendar来呈现我的网站成员的事件。每个人都可以添加自己的活动每个事件都必须具有唯一的ID,我在PHP中使用了SELECT INCREMENT(MAX('id'))。然后适当的var传递给JavaScript,这是一个问题。在添加新事件的第二次尝试中,该数字会被提供给fullcalendar renderEvent函数。首先点击日历,变量是空的声明(在名为newEventId的变量中)。
这里是我的代码:
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