FullCalendaR语言 JSON 源不起作用,但直接使用 JSON 数据可以



我在页面上正确设置了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无效。

我希望这对你有用。

相关内容

  • 没有找到相关文章