感谢 Biesior 的有用回答。我能够使用您建议的代码来获得我正在寻找的行为。
在使用上述方法时,我注意到 Firebug 的控制台显示两个 AJAX 数据请求同时执行,一个用于与当前日期关联的视图,另一个用于与指定 gotoDate 关联的视图。
从用户的角度来看,似乎没有任何额外的延迟,并且日历从一开始就显示请求的视图。但是,“加载”回调将被多次调用,这在某些情况下可能会导致奇怪的行为。当前日期的多余 AJAX 请求也可能会产生其他不希望的结果。
我能够避免不必要的 AJAX 请求,方法是在没有事件源的情况下初始化日历,然后移动到上面 Biesior 所示的所需日期,然后添加事件源。顺序如下所示。 我删除了一些不相关的 FullCalendar 选项和回调以保持简洁。还有一些额外的 AJAX 参数,还有一些 PHP,但是需要注意的重要一点是指定事件源的时间。
原始代码导致两个同时的 AJAX 请求:
$('#calendar').fullCalendar({
events: {
url:'/Services/GetEvents.php',
type: 'POST',
data: {
lat: <?=$venLatitude?>,
lon: <?=$venLongitude?>,
userID: <?=$userID?>,
distance: <?=$distance?>
}
}
})
$('#calendar').fullCalendar('gotoDate', <?=(int)substr($startDate,0,4)?>, <?=((int)substr($startDate,5,2))-1?>);
此调整仅产生所需的 AJAX 请求:
$('#calendar').fullCalendar();
$('#calendar').fullCalendar('gotoDate', <?=(int)substr($startDate,0,4)?>, <?=((int)substr($startDate,5,2))-1?>);
$('#calendar').fullCalendar('addEventSource', {
url:'/Services/GetEvents.php',
type: 'POST',
data: {
lat: <?=$venLatitude?>,
lon: <?=$venLongitude?>,
userID: <?=$userID?>,
distance: <?=$distance?>
}
});