我正在尝试使用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
},
]
为什么事件没有呈现的任何想法?
答案 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的有效性。