如何通过jquery fullcalendar中的ajax响应发送日历事件

时间:2017-10-10 11:35:04

标签: javascript jquery ajax codeigniter fullcalendar

我正在使用带有Codeigniter的jQuery Fullcalendar。首先,我有一张表,其中包含计划时间和名称。我在加载日历页面时向fullcalendar.js发送数据,但我想在ajax响应中。我怎么样?请帮帮我。

我试过下面的代码。

function get_locationdata(start, end) {
    $.ajax({
        type: "POST",
        url: '<?php echo base_url(); ?>/index.php/Task_controller/get_schedulelocationsdata',    
        data: {
            start: start,
            end: end,
            user_id: user_id
        },
        success: function(resp) {
            defaultEvents = resp;
        }
    });
}

defaultEvents = resp;

<script src = '<?php echo base_url(); ?>assets/plugins/fullcalendar/dist/fullcalendar.min.js'></script>
<script src = "<?php echo base_url(); ?>assets/pages/jquery.fullcalendar.js"></script>

defaultEvents是我发送给jquery.fullcalendar.js的数组 在resp中,我收到了json_encoded个数据。我想使用ajax响应将事件发送到fullcalendar.js

1 个答案:

答案 0 :(得分:1)

获取活动的最简单方法是将您的Feed从POST Feed更改为GET。然后,您需要做的就是将URL传递给Fullcalendar,一切正常。

如果无法做到,则必须重新安排代码。您的AJAX调用是异步的,这意味着它不会立即完成并获得结果,而您下面的代码(例如第二行defaultEvents = resp;)将无法访问从AJAX返回的任何结果 - {{1}那时是未定义的。

因此,在成功回调中,您需要在AJAX完成时初始化Fullcalendar。这假设您的AJAX POST返回一组事件correctly formatted and as expected by Fullcalendar(例如一个数组)。如果格式不正确,则需要在AJAX resp回调中处理它们。

success

请注意,通过向Fullcalendar提供一组静态事件,这意味着在更改视图时不会更新这些事件。因此,如果您单击日历导航按钮以查看下个月,则不会更新事件。除非您在初始function get_locationdata(start, end) { $.ajax({ type: "POST", url: '<?php echo base_url(); ?>/index.php/Task_controller/get_schedulelocationsdata', data: { start: start, end: end, user_id: user_id }, success: function(resp) { // Now you have your event data, you can fire up Fullcalendar initFullcalendar(resp); } }); } function initFullcalendar(events) { $('#calendar').fullCalendar({ // ... events: events, }); } // Fire everything off get_locationdata('2017-10-10', '2017-11-10'); 来电中加载所有过去,现在和将来的事件,否则您将看不到新月的新事件。您需要提出一些涉及get_locationdata()回调的解决方案,以便在更改视图时(例如,点击新月),您可以启动新的AJAX请求以获取新事件。