如何格式化FullCalendar eventSources URL的结果数据

时间:2018-11-06 11:01:46

标签: php json ajax fullcalendar

我想从一个单独的URL调用我的事件进行全日历。 我在这里使用这种方法: https://fullcalendar.io/docs/eventSources

$('#calendar').fullCalendar({
  eventSources: [
    '/feed1.php'
  ]
});

如何在“ /feed1.php ”中格式化结果?

我尝试了通常可以正常工作的典型JSON格式:

{ID:'1265',start:'2018-11-15',title:'Bentley', editable : false, allDay : true},
{ID:'1222',start:'2018-11-14',title:'Dave', editable : false, allDay : true}

但这不起作用。

我要从“ /feed1.php ”显示的日期是否应该使用一种格式?

1 个答案:

答案 0 :(得分:2)

您的JSON无效-在与fullCalendar期望有关的其他方面也出错。如果检查,您的浏览器控制台中可能有错误。

  • 您的JSON应该构造为一个数组,其中的[] 字符串的开始和结束。

  • 在JSON中,必须在属性名称周围使用双引号(") 和值(而不是单引号(')。 同样,所有属性名称必须在其周围加上引号。

  • 最后,fullCalendar期望ID应该是id

我不知道您是如何构建结果的,但是您实际上应该在PHP中创建事件对象数组,然后使用json_encode()使PHP将数组转换为有效的JSON。

这是一个使用一些静态PHP数据的示例,尽管我实际上假设您将从数据库数据或其他数据构造数组。

<?php
$events = array(
    array("id" => 1265, "start" => "2018-11-15", "title" => "Bentley", "editable" => false, "allDay" => true),
    array("id" => 1222, "start" => "2018-11-14", "title" => "Dave", "editable" => false, "allDay" => true),
);
echo json_encode($events);
?>

这将输出如下的有效JSON:

[{
    "id": 1265,
    "start": "2018-11-15",
    "title": "Bentley",
    "editable": false,
    "allDay": true
},
{
    "id": 1222,
    "start": "2018-11-14",
    "title": "Dave",
    "editable": false,
    "allDay": true
}]

这是该代码的working demo

这里是demo的fullCalendar,使用该JSON输出正确显示事件。

这里是json_encode() documentation

此外,fullCalendar还documents期望每个事件具有的字段名称。