2010-10-23 82 views
0

我試圖將json事件源加載到FullCalendar jQuery插件中,但是,我不明白如何將數據傳遞到FullCalendar。 url被調用,並且JSON對象在eventHandler函數內可用。問題在FullCalendar中使用JSONP呈現遠程事件

下面的代碼試圖將結果數據傳遞給一個全局變量(它感覺不對),然後傳遞給FullCalendar。

什麼是正確的方式將數據從請求傳遞到FullCalendar?

function eventHandler(data) { 
    events = data; 
} 


$.ajax({ 
    dataType: 'jsonp', 
    url: 'http://localhost:9393/events/calendar/1.json', 
    jsonp: 'callback', 
    success: eventHandler 
}); 

回答

1

如果你在同一個域(當你部署),然後訪問該JSON下面應該工作:

$('#calendar').fullCalendar({ 
    events: "http://localhost:9393/events/calendar/1.json" 
}); 

或者,你看:

$.getJSON("http://localhost:9393/events/calendar/1.json&jsoncallback=?", 
    function(data){ 
     $('#calendar').fullCalendar(data); 
    }); 
+1

那麼,我應該在請求塊內啓動fullCalendar嗎?如果是這樣,加載其他事件源怎麼樣? – nickcharlton 2010-10-23 22:52:55

+1

根據文件,是的。至於加載其他事件源,它看起來像你要委託給另一個函數,使你的請求和合並所有的JSON對象到一個JSON對象,保存所有的數據。它看起來像FullCalendar沒有多個事件源的本機支持。 – t3hb4tman 2010-10-23 23:21:33

+0

最後的解決方案需要調整上面的第三行,以指定數據應該做什麼。 '$('#calendar')。fullCalendar({events:data});' – nickcharlton 2010-10-24 14:16:50

2

對於現在讀這個的人來說,有一種更簡單的方法,因爲Fullcalendar會在URL中看到回調時自動添加事件。

所以,你的事件源可以只是看起來像:

$('#calendar').fullCalendar({ 
    eventSources: [ 
    "http://some.domain.com/api/events.json?callback=?", 
    "http://another.domain.com/api/events.json?callback=?" 
    ] 
}); 

的重要組成部分,是callback=?。通常你會使用callback=myspecialfunction,但Fullcalendar會解釋?並自動添加事件。