如何在fullcalendar中显示从api提取事件?

时间:2019-03-04 07:31:55

标签: javascript php jquery codeigniter fullcalendar

代码:

"use strict";
$('#calendar').fullCalendar({
    header: {
        left: 'prev,next today',
        center: 'title',
        right: 'month,agendaWeek,agendaDay,listWeek'
    },
    defaultDate: new Date(),
    editable: true,
    droppable: true,
    drop: function() {
        if ($('#drop-remove').is(':checked')) {
            $(this).remove();
        }
    },
    eventLimit: true,
    events: function (start, end, timezone, callback) {
            $.ajax({
                type: "GET",
                url: "https://www.example.com/calender_api", 
                contentType: "application/json; charset=utf-8",  
                dataType: "json",
                success: function (doc) {
                    var events = [];
                    var obj = doc;
                    $(obj).each(function () {                          
                            events.push({
                            title: $(this).attr('title'),
                            start: $(this).attr('start')
                        });
                    });                     
                    if (callback) callback(events);
                }
            });
        }
});

calender_api.php:

[{start:"2019-03-06",title:"Conference"},{start:"2019-03-13",title:"Recruiting And Staffing"}]

我创建了一个活动日历,看起来很好,问题是如上所述,我该如何显示calender_api中的事件?请帮助我。

谢谢

1 个答案:

答案 0 :(得分:0)

似乎您已经从fullCalendar文档示例(https://fullcalendar.io/docs/events-function)中几乎逐行复制并粘贴了代码,而没有试图理解它。它清楚地提到那里的代码旨在将数据从XML响应转换为fullCalendar所需的JS对象格式。您这里没有这个问题,因为您的PHP已经返回了JSON,可以直接对其进行解析,而无需进行转换。

您可以

a)稍微更改ajax代码,使其直接将数据直接返回到fullCalendar:

success: function (doc) {
  callback(doc);
}

b)仅用URL替换整个内容,因为它已经符合此方法所示的fullCalendar规范:https://fullcalendar.io/docs/events-json-feed

events: "https://www.example.com/calender_api"

执行此操作时,fullCalendar将负责启动AJAX请求并为您处理响应。