События не обрабатываются с помощью фида JSON - PullRequest
0 голосов
/ 28 октября 2010

Я пытаюсь использовать канал JSON для отображения событий в fullCalendar.Вот код:

        $('#calendar').fullCalendar({

            editable    : true,
            selectable  : true,
            select      : selectionMade,
            eventResize : eventsChanged,
            eventDrop   : eventsChanged,
            selectable  : true,
            eventRender : beforeRenderEvent,
            weekend     : false,
            defaultView : "agendaWeek",
            eventClick  : eventClicked,
            theme       : true,
            aspectRatio : 1.5,
            events      : '<%= shifts_path %>',                    
            header      : 
            {
                left: 'prev,next today',
                center: 'title',
                right: 'agendaWeek,agendaDay'
            }
        });

Shifts_path - путь контроллера сдвигов.Это приложение рельсы.Запрос обратно в фид json работает.Когда я просматриваю ajax-запросы, которые были отправлены, запрос возвращается по пути Shift, и он возвращается без ошибок.Однако события не отображаются в календаре и остаются пустыми.Когда я вызываю метод clientEvents из fullcalendar, он возвращает пустой массив.Я попытался вставить JSON, который возвращает сервер прямо в коде.При этом события отображаются нормально.Вот пример JSON, который возвращает сервер.

[
    {
        title   : 'New shift',
        start   : '2010-10-25 09:30:00 +0100',
        end     : '2010-10-25 13:30:00 +0100',
        allDay  : false
    },
    {
        title   : 'New shift',
        start   : '2010-10-25 08:00:00 +0100',
        end     : '2010-10-25 14:00:00 +0100',
        allDay  : false
    },
    {
        title   : 'New shift',
        start   : '2010-10-25 08:00:00 +0100',
        end     : '2010-10-25 14:00:00 +0100',
        allDay  : false
    },
    {
        title   : 'New shift',
        start   : '2010-10-27 08:00:00 +0100',
        end     : '2010-10-27 13:30:00 +0100',
        allDay  : false
    },
]

Есть идеи, почему события не отображаются?

1 Ответ

5 голосов
/ 29 октября 2010

То, что вы возвращаете, не является допустимым JSON, поэтому начиная с версии 1.4, jQuery будет отклонять и даже не пытаться анализировать его.

Есть 2 проблемы, ваши имена и значения должны быть double в кавычках, вот так: "title" : "New shift" и после последнего события в массиве есть запятая.В целом ваш пример JSON должен выглядеть следующим образом:

[
    {
        "title" : "New shift",
        "start" : "2010-10-25 09: 30: 00 +0100",
        "end" : "2010-10-25 13: 30: 00 +0100",
        "allDay" : false 
    },
    {
        "title" : "New shift",
        "start" : "2010-10-25 08: 00: 00 +0100",
        "end" : "2010-10-25 14: 00: 00 +0100",
        "allDay" : false 
    },
    {
        "title" : "New shift",
        "start" : "2010-10-25 08: 00: 00 +0100",
        "end" : "2010-10-25 14: 00: 00 +0100",
        "allDay" : false 
    },
    {
        "title" : "New shift",
        "start" : "2010-10-27 08: 00: 00 +0100",
        "end" : "2010-10-27 13: 30: 00 +0100",
        "allDay" : false 
    } 
]

Вы всегда можете проверить правильность вашего JSON, используя JSONLint.com .

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