未使用JSON Feed呈现事件

时间:2010-10-28 18:09:56

标签: javascript jquery json events fullcalendar

我正在尝试使用JSON提要在fullCalendar中呈现事件。这是代码。

        $('#calendar').fullCalendar({

            editable    : true,
            selectable  : true,
            select      : selectionMade,
            eventResize : eventsChanged,
            eventDrop   : eventsChanged,
            selectable  : true,
            eventRender : beforeRenderEvent,
            weekend     : false,
            defaultView : "agendaWeek",
            eventClick  : eventClicked,
            theme       : true,
            aspectRatio : 1.5,
            events      : '<%= shifts_path %>',                    
            header      : 
            {
                left: 'prev,next today',
                center: 'title',
                right: 'agendaWeek,agendaDay'
            }
        });

Shifts_path是换档控制器的路径。它是一个rails应用程序。返回json feed的请求正在运行。当我查看已经发出的ajax请求时,请求返回到它的转移路径并返回没有错误。但事件不会在日历上呈现,而且仍为空白。当我调用fullcalendar的clientEvents方法时,它返回一个空数组。我尝试粘贴服务器直接与代码内联返回的JSON。执行此操作时,事件会正常。以下是服务器返回的JSON示例。

[
    {
        title   : 'New shift',
        start   : '2010-10-25 09:30:00 +0100',
        end     : '2010-10-25 13:30:00 +0100',
        allDay  : false
    },
    {
        title   : 'New shift',
        start   : '2010-10-25 08:00:00 +0100',
        end     : '2010-10-25 14:00:00 +0100',
        allDay  : false
    },
    {
        title   : 'New shift',
        start   : '2010-10-25 08:00:00 +0100',
        end     : '2010-10-25 14:00:00 +0100',
        allDay  : false
    },
    {
        title   : 'New shift',
        start   : '2010-10-27 08:00:00 +0100',
        end     : '2010-10-27 13:30:00 +0100',
        allDay  : false
    },
]

为什么事件没有呈现的任何想法?

1 个答案:

答案 0 :(得分:5)

您返回的内容不是有效的JSON,因此从版本1.4开始,jQuery将拒绝甚至不尝试解析它。

有两个问题,您的名称和值应该是 double 引用,如下所示:"title" : "New shift"并且在数组中的最后一个事件之后有一个尾随逗号。总体而言,您的示例JSON应如下所示:

[
    {
        "title" : "New shift",
        "start" : "2010-10-25 09: 30: 00 +0100",
        "end" : "2010-10-25 13: 30: 00 +0100",
        "allDay" : false 
    },
    {
        "title" : "New shift",
        "start" : "2010-10-25 08: 00: 00 +0100",
        "end" : "2010-10-25 14: 00: 00 +0100",
        "allDay" : false 
    },
    {
        "title" : "New shift",
        "start" : "2010-10-25 08: 00: 00 +0100",
        "end" : "2010-10-25 14: 00: 00 +0100",
        "allDay" : false 
    },
    {
        "title" : "New shift",
        "start" : "2010-10-27 08: 00: 00 +0100",
        "end" : "2010-10-27 13: 30: 00 +0100",
        "allDay" : false 
    } 
]

您始终可以使用JSONLint.com检查JSON的有效性。