页面加载时未显示的事件

时间:2011-05-30 22:37:56

标签: php json fullcalendar

我正在使用通过json调用的Fullcalendar,并且发生了一些非常奇怪的事情,这让我很伤心!无法找到解决方法。

我的标签下有我的日历。当我单击该选项卡时,日历网格会显示,但没有任何事件。如果我在下个月点击日历然后再回到上个月,则事件都会正常显示!

如果我导航到另一个页面然后返回日历页面,则会发生同样的事情。必须前往下一个和上一个加载事件。

这就是我打电话给日历的方式:

$(document).ready(function() {
    $('#calendar').fullCalendar({
        editable: false,
        events: "../events_calendar.php",
        loading: function(bool) {
            if (bool) $('#loading').show();
            else $('#loading').hide();
        }
    }); });

这里有什么想法吗?

感谢。

3 个答案:

答案 0 :(得分:1)

页面加载时隐藏日历可能会出现问题。

所以你可以尝试重新报道这个事件 http://arshaw.com/fullcalendar/docs/event_rendering/rerenderEvents/

.fullCalendar( 'rerenderEvents' )

要确保事件正常,您应该连接refetchEvent http://arshaw.com/fullcalendar/docs/event_data/refetchEvents/

.fullCalendar( 'refetchEvents' )

当日历显示并准备好时,应该调用这些事件,而不是之前,因为它可能会遇到同样的问题。

我认为这已经存在问题 - 但它可以在最新版本中解决。但我现在找不到它。尝试并搜索支持

中的错误

http://code.google.com/p/fullcalendar/issues/list?can=1&q=

除此之外,您将不得不尝试调整日历加载的方式等...

答案 1 :(得分:1)

您的问题可能是由于FullCalendar正在发出异步请求(这意味着日历可能会在返回数据之前加载)。因此,将其更改为进行同步请求。

而不是这个

    $(document).ready(function() {
        $('#calendar').fullCalendar({
            editable: false,
            events: "../events_calendar.php",
            loading: function(bool) {
                if (bool) $('#loading').show();
                else $('#loading').hide();
            }    
    }); });

使用类似的东西:

$(document).ready(function() {
    $('#calendar').fullCalendar({
        editable: false,
        eventSources: [
        {
            url: '../events_calendar.php',
            async: false // No longer asynchronous
        }
    ],
        loading: function(bool) {
            if (bool) $('#loading').show();
            else $('#loading').hide();
        }
    }); });

http://arshaw.com/fullcalendar/docs/event_data/events_json_feed/

上的示例进行比较

答案 2 :(得分:0)

我遇到了同样的问题(请参阅我对原帖的评论),并找出原因。 我的json事件是这样的,并且如果不被称为ajax(即json是参数'events'的值),它完全是redering:

 [{id:2317,title:"test",start:"2011-06-08 09:00:00.0",end:"2011-06-08 11:00:00.0",allDay:false,url:"log/show/2317",backgroundColor: 'green'}]

然而,当通过ajaxed调用时它不起作用。为了使它工作,将你的json的属性名称放在双引号“...”之间。小心不要使用单引号,它也不起作用。我的json成为:

[{"id":2317,"title":"test","start":"2011-06-08 09:00:00.0","end":"2011-06-08 11:00:00.0","allDay":false,"url":"log/show/2317","backgroundColor": "green"}]

希望它有所帮助!