2010-10-23 86 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会解释?并自动添加事件。