2010-10-23 1 views
0

Я пытаюсь загрузить поток событий json в плагин FullCalendar jQuery, однако я не понимаю, как передать данные в FullCalendar. Вызывается url, и объект JSON доступен внутри функции eventHandler.Проблемы рендеринга удаленных событий с использованием JSONP в FullCalendar

Код ниже пытается передать результирующие данные в глобальную переменную (которая, не чувствуется права), которая затем передается в 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

+1

Согласно документации, да. Что касается загрузки других источников событий, похоже, вы собираетесь делегировать это другой функции, которая делает ваши запросы и объединяет все объекты JSON в один объект JSON, содержащий все ваши данные. Похоже, что FullCalendar не имеет встроенной поддержки для нескольких источников событий. – t3hb4tman

+0

Окончательное решение потребовало корректировки третьей строки выше, чтобы указать, что должны делать данные. '$ ('# calendar'). fullCalendar ({events: data});' – nickcharlton

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 будет интерпретировать ? и автоматически добавлять события.