我正在使用带有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
。
答案 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请求以获取新事件。