2014-02-10 87 views
0

我正在嘗試使用接收事件數組的函數來更新FullCalendar對象。未捕獲的類型錯誤:對象不是函數(在AJAX回調中)

$('#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警報正在返回正確的類型,但回調不起作用。有什麼建議麼?

+0

您在console.log行缺少';'行。 – Hogan

+0

謝謝。不幸的是,問題依然存在。 – erythraios

+0

你通過什麼回調>? – tymeJV

回答

1

我沒有使用這個插件,但從文檔(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); 
      } 
     }); 
    } 
}); 
+0

這似乎已經修復了它!然而,這些事件並沒有加載,所以我不確定我現在是否離解決方案更近或更遠了。 – erythraios

+0

我很高興它的工作!對不起,我不知道插件的任何內容,所以我不能說這些事件發生了什麼:( – mcbex

0

試試這個:

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

應該是沒有什麼必要寫自己的Ajax調用,它是建立在

如果沒有按。沒有用,你可以發佈你的JSON feed的輸出嗎?

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) 
}); 

如果不說,消除對回調的回報。

確實工作?

*請注意:我認爲「回調」是一個函數,你傳入並已在某處實例化它。

相關問題