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



我正在使用带有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中我得到CCD_ 4数据。我想使用ajax响应将事件发送到fullcalendar.js

获取事件的最简单方法是将提要从POST提要更改为get。然后,您所需要做的就是将URL传递给Fullcalendar,一切都会正常工作。

如果这不可能,您将不得不重新安排您的代码。AJAX调用是异步的,这意味着它不会立即完成并获得结果,并且它下面的代码(例如第二行defaultEvents = resp;)将无法访问AJAX返回的任何结果——此时resp是未定义的。

因此,当AJAX完成时,您需要在成功回调中初始化Fullcalendar。这假设您的AJAX POST返回一组格式正确的事件,并且符合Fullcalendar的预期(例如数组)。如果它们的格式不正确,则需要在AJAXsuccess回调中处理它们。

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');

请注意,通过向Fullcalendar提供一组静态事件,这意味着它们不会在您更改视图时更新。因此,如果您单击日历导航按钮查看下个月,则不会更新事件。除非在最初的get_locationdata()调用中加载所有过去、现在和将来的事件,否则您将看不到新月份的新事件。您需要想出一些涉及viewRender回调的解决方案,这样当视图发生更改时(例如,单击新的月份),您就可以发出一个新的AJAX请求来获取新的事件。

最新更新