2012-09-05 23 views
2

我正在使用jQuery fullcalendar插件。jQuery使用fullcalendar插件获取下个月的数据

我如何获得通过点击“下一步”按钮

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

其实下个月的数据即传递数据,我现在用的单击事件来调用一个按钮。

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

我不明白你在问什么 - 你想以编程方式去下个月,或者你想知道下个月会是什么? – ganeshk

+0

我想他希望在下个月实际显示下个月的日历。 –

回答

2

当“下一步”和“上一个”按钮被点击,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'); 

我决定把全年所有事件在timne,而不是按月减少请求,因为事件的数量是低的。如果每个用户有大量的事件,那么按月抽取它们更有意义。

0

上面的答案让我偏向了那里,但是我觉得我的想法稍微简单一些,并且也针对最新的FullCalendar进行了更新。

$(document).ready(function() { 
     var d = new Date(); 

     $('#calendar').fullCalendar({ 
      header: { 
       left: 'prev,next today', 
       center: 'title', 
       right: 'month,agendaWeek,agendaDay' 
      }, 
      fixedWeekCount: true, 
      defaultDate: d, 
      editable: true, 
      eventLimit: false, 
      events: function(start, end, timezone, callback) { 
       var eventsUrl = '/events/' + end.year() + '/' + parseInt(end.month()); 
       $.ajax({ 
        url: eventsUrl, 
        type: 'GET' 
       }).done(function(response) { 
        callback(response); 
       }).fail(function(response, status, error) { 
        alert(status + ': ' + error); 
       }); 
      }, 
      loading: function(isLoading) { 
       if (isLoading) { 
        $('#loading').show(); 
       } else { 
        $('#loading').hide(); 
       } 
      } 
     }); 
    }); 

的 '/事件/' URL包括年份和月份(例如 '/事件/ 2015/2'),以获得特定月份的事件。当日历第一次加载时,它默认为当前日期,并且方便地在第一次加载时传递给日历的结束参数与start相同,因此它可以在第一次加载时使用,以及在上一个和下一个按钮时使用被点击。

无论如何,这对我来说非常合适,所以我认为我会分享,因为它与我在今天研究这个过程中发现的任何其他示例有所不同。