我正在尝试使用接收事件数组的函数更新FullCalendar对象。
$('#sh1_cal').fullCalendar({
events: function(callback) {
$.ajax({
type: 'GET',
url: 'http://localhost:8080/getEvents',
dataType: 'json',
success: function(reply) {
//var events = [];
console.log("printing " + reply.first)
alert(typeof reply.first);
callback(reply.first);
}
});
}
});
回复旨在成为包含两个数组作为其属性的对象。我正在提取第一个,似乎 typeof alert 返回了正确的类型,但回调不起作用。有什么建议吗?
我没有使用过这个插件,但从文档 (http://arshaw.com/fullcalendar/docs/event_data/events_function/) 来看,事件函数需要 3 个参数:开始、结束和回调。
开始和结束是指示事件何时开始和结束的日期对象。你现在的方式,该函数认为有一个名为"回调"的日期对象,这就是你收到错误的原因。在 JavaScript 中,参数的名称并不重要(例如,您可以称它为"cb"或"foo"而不是"callback"),但顺序很重要。
尝试(未经测试):
$('#sh1_cal').fullCalendar({
events: function(start, end, callback) {
$.ajax({
type: 'GET',
url: 'http://localhost:8080/getEvents',
dataType: 'json',
success: function(reply) {
callback(reply.first);
}
});
}
});
试试这个:
$('#sh1_cal').fullCalendar({
events: 'http://localhost:8080/getEvents'
});
不应该需要编写自己的ajax调用,它是内置的。
如果这不起作用,您可以发布 JSON 源的输出吗?
试试这个,让我知道它是否有效:
$('#sh1_cal').fullCalendar({
events: function(cb) {
$.ajax({
type: 'GET',
url: 'http://localhost:8080/getEvents',
dataType: 'json',
success: function(reply) {
return cb(reply.first);
//or try: cb(reply.first);
}
});
}(callback)
});
如果不是这样,请删除回调时的返回。
两者都有效吗?
*请注意:我假设"回调"是您传入的函数,并在某处实例化了它。
完整日历中的事件(作为函数)已更改。现在第三个参数是时区。有关完整日历文档 v2 的更多信息