未捕获的TypeError:对象不是函数(在AJAX回调中)

时间:2014-02-10 20:43:55

标签: javascript jquery ajax fullcalendar

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

            }
        });
    }
});

Reply是一个包含两个数组作为其属性的对象。我正在提取第一个,似乎typeof警报返回正确的类型,但回调不起作用。有什么建议吗?

4 个答案:

答案 0 :(得分:1)

我没有使用过这个插件,但是从文档(http://arshaw.com/fullcalendar/docs/event_data/events_function/)看来,事件函数看起来像3个参数:start,end和callback。

开始和结束是指示事件开始和结束的日期对象。你现在拥有它的方式,该函数认为有一个名为'callback'的日期对象,这就是你得到错误的原因。在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);
            }
        });
    }
});

答案 1 :(得分:0)

试试这个:

$('#sh1_cal').fullCalendar({
    events: 'http://localhost:8080/getEvents'
});

不应该编写自己的ajax调用,它是内置的。

如果这不起作用,您可以发布JSON Feed的输出吗?

答案 2 :(得分:0)

尝试这个,让我知道它是否有效:

$('#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)
});

如果不是,请删除回调上的回报。

是否有效?

*请注意:我认为“回调”是您传入的函数并已在某处实例化。

答案 3 :(得分:0)

fullcalendar中的事件(As Function)已更改。现在第三个参数是时区。 有关FullCalendar Documentation v2

的更多信息