0

我正在尝试通过将返回 JSON 数据的 URL 获取事件数据。相同的代码适用于 jQuery 1.3.2,但不适用于 jQuery 1.4.1

我在 FireBug 控制台中收到此错误


a 未定义

对于 (var i=0; 我

fullcalendar.js(第 369 行)


我正在获取 JSON 数据,因为我可以在 FireBug jQuery 1.4.1 的响应标头中检查它强制进行严格的 JSON 解析我不确定这是否是问题。

我在 apache webroot 中保留了 FullCalendar 示例。如果我对事件使用“/fullcalendar/examples/json-events.php”而不是我的CakePHP AJAX url“/myCake/calendars/get_events”,它适用于jQuery 1.4.1。但是,如果我在生成相同 JSON 的 CakePHP get_events.ctp 文件中的“/fullcalendar/examples/json-events.php”中包含相同的代码,它会在 jQuery 1.4.1 中给出相同的错误

如果有人遇到同样的问题并找到解决方案或解决方法,如果您分享您的经验将非常有帮助。

4

2 回答 2

0

听起来 jquery 1.4.1 确实在执行严格的 json 规则(http://yehudakatz.com/2010/01/15/jquery-1-4-and-malformed-json/),这就是发生错误的原因。fullcalendar.js 中的那一行是它解析提要的地方,所以很有意义。我会查看firebug中的json,看看每个字符串周围是否有双引号。如果没有,这绝对是你的问题。

我对 cakephp 不太熟悉,但如果你想快速破解事件作为函数,我会做以下或类似的事情......

$('#calendar').fullCalendar({
    events: function(start, end, callback) {
        $.getJSON('yourfeed.php', { start:start, end:end }, function(data) {
             callback(eval("(" + data + ")"));
        });
    }
});
于 2010-02-26T07:58:20.900 回答
0

我的问题是 jquery 1.4.1+ 不接受 JSON 中的单引号,所以这是一个简单的解决方法,但我猜你不是在可以更改生成的 JSON 的位置?

Arshaw 示例工作得很好(顺便说一句,感谢 arshaw 提供了一个很棒的插件 :))。或者您可以使用jquery-json 插件以安全的方式评估 json 响应。

于 2010-03-18T13:23:46.777 回答