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

Javascript 如何在jquery fullcalendar中通过ajax响应发送日历事件,javascript,jquery,ajax,codeigniter,fullcalendar,Javascript,Jquery,Ajax,Codeigniter,Fullcalendar,我将jQuery Fullcalendar与Codeigniter一起使用。首先,我有一张有时间表和名字的表。当我加载日历页面时,我正在将数据发送到fullcalendar.js,但我需要ajax响应。我的工作进展如何?请帮帮我 我试过下面的代码 function get_locationdata(start, end) { $.ajax({ type: "POST", url: '<?php echo base_url(); ?>/index

我将jQuery Fullcalendar与Codeigniter一起使用。首先,我有一张有时间表和名字的表。当我加载日历页面时,我正在将数据发送到
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>
函数获取位置数据(开始、结束){
$.ajax({
类型:“POST”,
url:“/index.php/Task\u controller/get\u schedulelocationsdata”,
数据:{
开始:开始,
完:完,,
用户id:用户id
},
成功:功能(resp){
defaultEvents=resp;
}
});
}
defaultEvents=resp;

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

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

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

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');
函数获取位置数据(开始、结束){
$.ajax({
类型:“POST”,
url:“/index.php/Task\u controller/get\u schedulelocationsdata”,
数据:{
开始:开始,
完:完,,
用户id:用户id
},
成功:功能(resp){
//现在您有了事件数据,可以启动Fullcalendar
初始日历(resp);
}
});
}
函数initFullcalendar(事件){
$(“#日历”).fullCalendar({
// ...
事件:事件,
});
}
//放火
获取位置数据(“2017-10-10”、“2017-11-10”);

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

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

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

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

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');
函数获取位置数据(开始、结束){
$.ajax({
类型:“POST”,
url:“/index.php/Task\u controller/get\u schedulelocationsdata”,
数据:{
开始:开始,
完:完,,
用户id:用户id
},
成功:功能(resp){
//现在您有了事件数据,可以启动Fullcalendar
初始日历(resp);
}
});
}
函数initFullcalendar(事件){
$(“#日历”).fullCalendar({
// ...
事件:事件,
});
}
//放火
获取位置数据(“2017-10-10”、“2017-11-10”);

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

通常,您可以通过提供URL直接告诉fullCalendar事件数据的位置(如果它符合fullCalendar指定的内容,如:。在您的情况下,因为您使用POST请求,所以它是不符合的,所以除非您可以更改它,否则您可以使用此模式:。尝试一下。如果遇到问题,请将更新的代码发布到此处。注意:是“jquery.fullCalendar.js”是jQuery的副本,还是fullCalendar的副本?如果是jQuery,则应将其添加到fullCalendar之前(并且您还需要其他依赖项,如momentJS,根据)。如果它是fullCalendar的另一个副本,那么您应该删除它,因为您已经在它上面的行上加载了fullCalendar。jquery.fullCalendar.js是fullCalendar的副本。正如@ADyson所说,您已经包含了
fullCalendar.min.js
。什么是
jquery.fullCalendar.js
?您的意思是说这是您的fullCalendar代码,初始化您r calendar?通常,您可以通过直接提供URL来告诉fullCalendar事件数据的位置(如果它符合fullCalendar指定的内容,如:。在您的情况下,由于您使用POST请求,因此它不符合要求,因此除非您可以更改该请求,否则您可以使用此模式:。尝试该模式。如果遇到问题,请在此处发布更新的代码。注意