我看了所有的例子,不明白为什么FullCalendar不会显示我的事件。日历会显示出来,如果我把json直接放在事件中:它可以工作,所以json看起来是正确的。请帮忙!——感谢
Javascript
$(document).ready(function() {
$('#calendar').fullCalendar({
header :{
left: 'prev, next, today',
center: 'title',
right: 'month, agendaWeek, agendaDay',
ignoreTimezone: false
},
selectable: true,
selectHelper: true,
editable: true,
// events: [{"id":"1","title":"Test","start":"2012-01-20T13:00:00-08:00","end":"2012-01-20T14:00:00-08:00","allDay":false}] WORKS
events:'getJSONEvents.php',
loading: function(bool) {
if (bool) $('#loading').show();
else $('#loading').hide();
}
});
})
PHP
<?php
$query = "SELECT * FROM `Events` ORDER BY `id` DESC";
if( GLOBALTESTMODE && $testMode){
$rows = mysql_query($query, $myconnection) or trigger_error("Error: Query failed.".$query, E_USER_ERROR);
} else {
$rows = mysql_query($query, $myconnection) or trigger_error("Error: Query failed.", E_USER_ERROR);
}
//write object to array
$eventsArray = array();
$events = array();
date_default_timezone_set('America/Los_Angeles');
while($row = mysql_fetch_array($rows, MYSQL_ASSOC)) {
$start = $row['start'];
$end = $row['end'];
$eventsArray['id'] = $row['id'];
$eventsArray['title'] = $row['title'];
$eventsArray['start'] = date('c', strtotime($start));
$eventsArray['end'] = date('c', strtotime($end));
if ($row['allDay'] == "true") {
$eventsArray['allDay'] = true;
} else {
$eventsArray['allDay'] = false;
}
$events[] = $eventsArray;
}
}
header('Content-type: application/json');
echo json_encode($events);
?>
您是否验证了PHP脚本是否返回了预期的结果?
还要确保Java脚本实际正确地调用了PHP脚本(您可以在web服务器访问日志中检查这一点)。如果调用不正确,可能需要指定PHP文件的完整路径。
尝试检查您的日期值是否为:a.IETF格式(例如:"美国东部时间2009年10月18日星期三13:00:00")b.ISO8601格式的字符串(例如:"2009-11-05T13:15:30Z")c.UNIX时间戳
我遇到过这样的问题,我的日期"2012-04-7T12:16:30Z"没有被接受。在将"0"添加到日期值"2012-04-07T12:16:30Z"后,我开始接收JSON事件。
抓住时机!
希望这能有所帮助!