未捕获的类型错误:对象不是函数(在 AJAX 回调中)



我正在尝试使用接收事件数组的函数更新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 的更多信息

相关内容

  • 没有找到相关文章

最新更新