我在页面上正确设置了FullCalendar,我正试图让它读取json源。
当我通过url直接访问json源时,它工作得很好,如果我复制屏幕上输出的数据并将其直接放入FullCalendar事件中,事件就会显示出来。
将事件设置为json源的url是不起作用的。我已经使用Firebugs NET面板来检查调用,它正确地定位了JSON源,并获取了正确的数据,但只是没有在日历上显示它。
我已经设置了id、title、全天(true)开始(unix和yyyy-mm-dd格式)和结束(尽管这是可选的)
有什么想法吗?
<script>
$(document).ready(function() {
$('#calendar').fullCalendar({
events: "eventsjson" // links to a controller in my symfony2 project. accessing cirectly gives correct json output
});
});
</script>
json给出的数据来源:
{"id":1,"title":"Test Event","start":1331309234,"allDay":true}
将^^^直接插入到事件设置中没有问题。(时间戳由php的time()函数生成)
问题在于当JSON对象中只有一个条目时,PHP的自然行为不包括[]括号。
如果添加了第二个,PHP就会添加[]括号,FullCalendar插件就会正常工作。
老实说,我认为这是FullCalendar的错,并已将其作为bug提交给作者。
我在这个问题上工作了很多小时,直到找到解决方案。
在我的项目中,我使用的是CakePHP v3和FullCalendar v2,它们都配置得很好。如果我将事件设置为数组模式,它工作得很好。。。但在URL模式下没有。许多人都有同样的问题:FullCalendar获取脚本(我在控制器中的操作)并获取反JSON数据,但任何事件都显示在日历中。
我构建的JSON响应是有效的(我在http://jsonlint.com/),但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
}
]
仅此而已。。。问题是外部"{}"one_answers"events"关键字对FullCalendar无效。
我希望这对你有用。