FullCalendar – JSON源不起作用,但直接使用JSON数据

我在我的页面上正确设置了FullCalendar,我试图让它读取json源代码。

当我直接通过url访问它时,我的json源工作正常,如果我复制屏幕上输出的数据并将其直接放入FullCalendar事件中,则事件显示出来。

将事件设置为我的json源的url只是不起作用。 我已经使用Firebugs NET面板来检查调用,它正确地找到了JSON源,并且正在获取正确的数据,但只是没有在日历上显示它。

我已设置id,title,allday(to true)start(unix和yyyy-mm-dd格式)并结束(尽管这是可选的)

有任何想法吗?

 $(document).ready(function() { $('#calendar').fullCalendar({ events: "eventsjson" // links to a controller in my symfony2 project. accessing cirectly gives correct json output }); });  

json来源提供的数据:

 {"id":1,"title":"Test Event","start":1331309234,"allDay":true} 

将^^^直接插入事件设置工作没问题。 (时间戳是由php的time()函数生成的)

问题是PHP的自然行为是在JSON对象中只有1个条目时不包含[]括号。

如果添加了第二个,则[]添加[]括号并且FullCalendar插件正常工作。

我认为这完全是FullCalendar的错误,并且已将其作为提交人的错误提交。

我在这个问题上工作了好几个小时,直到我找到解决方案。

在我的项目中,我正在使用CakePHP v3和FullCalendar v2,两者都配置得很好。 如果我在数组模式下设置事件,它运行良好…但没有在URL模式下。 同样的问题很多:FullCalendar获取脚本(我在我的控制器中的操作)并获取de JSON数据,但任何事件都显示在日历中。

我构建的JSON响应是有效的(我在http://jsonlint.com/上validation过),但是任何事件都没有在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 } ] 

这就是全部……问题是外部“{}”和“events”关键字对FullCalendar无效。

我希望这对你有用。