FullCalendar - источник JSON не работает, но использование данных JSON напрямую - PullRequest
0 голосов
/ 09 марта 2012

У меня на странице правильно настроен FullCalendar, и я пытаюсь заставить его прочитать исходный код json.

Мой источник json отлично работает, когда я обращаюсь к нему напрямую через URL, и если я копирую данные, выведенные на экран, и помещаю их непосредственно в события FullCalendar, событие появляется.

Установка событий в URL моего источника json просто не работает. Я использовал панель Firebugs NET для проверки вызова, и он правильно находит источник JSON и выбирает правильные данные, но просто не отображает их в календаре.

Я установил id, title, allday (true) начало (как в формате unix, так и в формате гггг-мм-дд) и конец (несмотря на то, что это необязательно)

Есть идеи?

<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 ())

Ответы [ 2 ]

2 голосов
/ 12 марта 2012

Проблема связана с естественным поведением PHP, НЕ включающим скобки [], когда в объекте JSON есть только 1 запись.

Если добавляется секунда, PHP добавляет скобки [] и плагин FullCalendar работает правильно.

Я считаю, что это вина FullCalendar, если честно, и подал это как ошибку автору.

1 голос
/ 26 июня 2015

Я работал над этой проблемой много часов, пока не нашел решение.

В моем проекте я работаю с 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
    }
]

Вот и все ... проблема в том, что внешнее ключевое слово "{}" и "события" недопустимы для FullCalendar.

Надеюсь, эта работа для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...