我正在使用jQuery fullcalendar插件。

如何获取下个月的数据,即通过点击“下一个”按钮传递数据

$('#calendar').fullCalendar({
    events:"automapic_admin.php?current_date='+currentdate,
    eventRender: function(event, element) {
        $('.fc-event-title', element).html(event.title);
    }
});


实际上,我正在使用click事件来调用下一个按钮。

$(".fc-button-next span").live("click", function(){ });

最佳答案

单击“下一个”和“上一个”按钮时,将调用events函数。这是加载当前年份和月份数据的示例。

$(document).ready(function () {
    loadCal();
});

function loadCal() {

    var current_url = '';
    var new_url     = '';

    $('#calendar').fullCalendar({

        // other options here...

        events: function( start, end, callback ) {

            var year  = end.getFullYear();
            var month = end.getMonth();

            new_url  = '/api/user/events/list/' + id + '/year/' + year + '/month/' + month;

            if( new_url != current_url ){

                $.ajax({
                    url: new_url,
                    dataType: 'json',
                    type: 'POST',
                    success: function( response ) {

                        current_url = new_url;
                        user_events = response;

                        callback(response);
                    }
                })
           }else{
               callback(user_events);
           }
        }
    })
}


在查询中检索结果时,请确保至少包括上个月的最后10天和下个月的前10天。这是PHP中的示例:

if( $month === null ){
    $month = '01';
}

$startDate     = $year . '-' .  $month . '-01';
$startDateTime = new \DateTime( $startDate );
$startDateTime->modify( '-10 days' );
$startDate     = $startDateTime->format( 'Y-m-d H:i:s' );


我决定将整个年度的所有活动推迟,而不是按月进行,以减少请求,因为活动数量很少。如果每个用户有大量事件,则按月拉动事件更有意义。

09-25 18:12