У меня есть FullCalendar правильно настроен на моей странице, и я пытаюсь заставить его прочитать источник json.
Мой источник json отлично работает, когда я обращаюсь к нему напрямую через URL-адрес, и если я копирую данные, выводимые на экран, и помещаю их непосредственно в события FullCalendar, это событие появляется.
Настройка событий на URL-адрес моего json-источника просто не работает. Я использовал панель Firebugs NET для проверки вызова, и он правильно находит источник JSON и извлекает правильные данные, но просто не показывает его в календаре.
Я установил id, title, allday (to true) start (как unix, так и yyyy-mm-dd) и закончил (несмотря на то, что это необязательно)
Есть идеи?
<script> $(document).ready(function() { $('#calendar').fullCalendar({ events: "eventsjson" // links to a controller in my symfony2 project. accessing cirectly gives correct json output }); }); </script>
Данные, предоставленные источником json:
{"id":1,"title":"Test Event","start":1331309234,"allDay":true}
Вставка того, что ^^^ прямо в настройку событий, не вызывает проблем. (временная метка была создана функцией php time ())
Проблема заключается в естественном поведении PHP, чтобы НЕ включать скобки [], когда в объекте JSON имеется только 1 запись.
Если добавлена секунда, скобки [] добавляются PHP, и плагин FullCalendar работает правильно.
Я считаю, что это вина FullCalendar в полной честности и подала его как ошибку с автором.
Я работал над этой проблемой в течение многих часов, пока не нашел решение.
В моем проекте я работаю с CakePHP v3 и FullCalendar v2, и оба они хорошо настроены. Если я задал события в режиме массива, он работал хорошо … но не в режиме URL. Та же проблема многих: FullCalendar получает скрипт (мое действие в моем контроллере) и принимает данные JSON, но любое событие отображается в календаре.
Ответ JSON, который я строю, действителен (я проверен на http://jsonlint.com/ ), но все события не отображаются в FullCalendar.
Это был мой ответ, который не сработал:
{ "events": [ { "id": "1", "title": "event1", "start": 1435336659, "end": 1436200659, "allday": false }, { "id": "2", "title": "event2", "start": "2015-07-06 11:37:39", "allday": false } ] }
И я создаю этот ответ с помощью этого кода (в моем контроллере):
$this->set('events', $event_array); $this->set('_serialize', ['events']);
Проблема заключалась в том, как я установил переменные в представление JSON. Решение:
$this->set(['events' => $event_array, '_serialize' => 'events']);
Вы можете проверить это в классе Cake \ View \ JsonView. Этот код создает следующий ответ JSON:
[ { "id": "1", "title": "event1", "start": 1435336961, "end": 1436200961, "allday": false }, { "id": "2", "title": "event2", "start": "2015-07-06 11:42:41", "allday": false } ]
Вот и все … проблема заключается в внешнем ключевом слове {{} "и" events ", который недействителен для FullCalendar.
Надеюсь, эта работа для вас.