我正在尝试通过URL获取事件数据,该URL将返回JSON数据。 相同的代码使用jQuery 1.3.2但不适用于jQuery 1.4.1
我在FireBug控制台中收到此错误
a未定义
for(var i = 0; i
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。 但是如果我在我的CakePHP get_events.ctp文件中的“/fullcalendar/examples/json-events.php”中包含相同的代码,该文件生成相同的JSON,那么它会给jQuery 1.4.1带来同样的错误
如果有人遇到同样的问题并找到了解决方案或解决方法,那么如果你分享你的经验,将会非常有帮助。
答案 0 :(得分:0)
听起来肯定是jquery 1.4.1强制执行严格的json规则(http://yehudakatz.com/2010/01/15/jquery-1-4-and-malformed-json/),这就是错误发生的原因。 fullcalendar.js中的那一行是解析feed的地方,所以很有意义。我会看看firebug中的json,看看每个字符串周围是否有双引号。如果没有,这肯定你的问题。
我不熟悉cakephp,但如果你想快速破解事件作为功能,我会做以下或类似的事情......
$('#calendar').fullCalendar({
events: function(start, end, callback) {
$.getJSON('yourfeed.php', { start:start, end:end }, function(data) {
callback(eval("(" + data + ")"));
});
}
});
答案 1 :(得分:0)
我的问题是jquery 1.4.1+不接受JSON中的单引号,所以这是一个简单的修复,但我想你不是在你可以改变生成的JSON的位置?
Arshaws的例子工作得非常好(非常感谢arshaw获得了一个很棒的插件:))。或者您可以使用jquery-json plugin以安全的方式评估json响应。