JQuery FullCalendar在从ajax成功调用rerenderEvents方面遇到麻烦

时间:2012-09-07 20:08:57

标签: javascript jquery ajax fullcalendar

出于某种原因,我无法在POST后重新呈现日历。一切顺利到那一点:

$('#calendar').fullCalendar({
    ...
    select: function (startDate, endDate) {
        $.ajax({
            url: 'data.php',
            type: "POST",
            data: {
                'start':startDate,
                'end':endDate,
                }
            success: $('#calendar').fullCalendar('rerenderEvents')
            }
     ...
    });

数据发布成功,我的php脚本将新事件添加到数据库就好了。唯一的问题是日历没有被数据库中的新数据重新呈现。

如果我刷新页面(Firefox中的F5),则会呈现新事件。显然,我需要在事件提交到数据库后立即显示该事件。我不能指望我的用户刷新页面。

我已经对这个成功案例进行了许多排列,例如:

function () {
    $('#calendar').fullCalendar('rerenderEvents');
}

和(我的php返回'成功'),

function (data) {
    if (data === 'success') $('#calendar').fullCalendar('renderEvents');
}

但是,无论如何,添加到数据库的新事件仅在我刷新屏幕时显示。任何人都可以提出我可能做错的建议吗?

1 个答案:

答案 0 :(得分:4)

尝试:

$('#calendar').fullCalendar("refetchEvents");

更新2013-01-31。

这是有效的,因为你强迫FC重新读取事件源并再次渲染日历。

但是,如果有时候这是一个强力解决方案,另一种实现相同的方法(如果可能的话)就是这样做,比如在dayClick创建一个新事件时:

  • 使用$.ajax
  • 更新event-DB
  • 创建相应的新事件: yourcal.fullCalendar('renderEvent', {id:x,start:timest,end:timend,title:txt}, true);