FullCalendar не работает в CakePHP 1.2.5 с jQuery 1.4.1 - PullRequest
0 голосов
/ 15 февраля 2010

Я пытаюсь получить данные о событиях через URL-адрес, который будет возвращать данные JSON. Тот же код работает с jQuery 1.3.2, но не с jQuery 1.4.1

Я получаю эту ошибку в консоли FireBug


а не определено

для (var i = 0; i

fullcalendar.js (строка 369)


Я получаю данные JSON, поскольку я могу проверить их в заголовке ответа FireBug JQuery 1.4.1 налагает строгий анализ JSON Я не уверен, что это проблема.

Я сохранил пример FullCalendar в apache webroot. Если я использую «/fullcalendar/examples/json-events.php» для событий вместо моего CakePHP AJAX url «/ myCake / calendars / get_events», это работает для jQuery 1.4.1. Но если я включу тот же код в "/fullcalendar/examples/json-events.php" в моем файле CakePHP get_events.ctp, который генерирует тот же JSON, он выдаст ту же ошибку с jQuery 1.4.1

Если кто-то сталкивался с той же проблемой и нашел решение или обходной путь, будет очень полезно, если вы поделитесь своим опытом.

Ответы [ 2 ]

0 голосов
/ 18 марта 2010

Моя проблема заключалась в том, что jquery 1.4.1+ не принимает одинарные кавычки в JSON, так что это было легко исправить, но я полагаю, вы не в состоянии изменить сгенерированный JSON?

Пример с Arshaws работает очень хорошо ( спасибо, arshaw, за отличный плагин, кстати:) ). Или вы можете использовать jquery-json plugin , чтобы безопасно оценить ответ json.

0 голосов
/ 26 февраля 2010

это определенно звучит так, как будто jquery 1.4.1 применяет строгие правила json (http://yehudakatz.com/2010/01/15/jquery-1-4-and-malformed-json/), и именно поэтому возникает ошибка. Эта строка в fullcalendar.js - это место, где она анализирует фид, поэтому имеет смысл. I Я бы посмотрел на json в firebug и увидел, есть ли двойные кавычки вокруг каждой строки. Если нет, то это определенно ваша проблема.

Я не очень знаком с CakePHP, но если вы хотите быстро взломать события как функцию , я бы сделал следующее или что-то в этом роде ...

$('#calendar').fullCalendar({
    events: function(start, end, callback) {
        $.getJSON('yourfeed.php', { start:start, end:end }, function(data) {
             callback(eval("(" + data + ")"));
        });
    }
});
...