数据未发布在fullcalendar中?

问题描述 投票:1回答:1

我有这个代码:

$('#calendar_1').fullCalendar({
      header :
      {
        left : 'prev,next today',
        center : 'title',
        right : 'month,agendaWeek,agendaDay'
      },
      defaultView : 'month',
      eventSources: [
      {
            url: 'holidays.php',
            type: 'POST',
            data : {
              sdate : $("#calendar_1").fullCalendar('getView').intervalStart,
              common : 'Common'
            },
            error: function() {
              alert('there was an error while fetching events!');
            },
            color: 'yellow',   // a non-ajax option
            textColor: 'black' // a non-ajax option
      }
      ],
      eventRender : function(event, element, view) {
        var date = event.start.format("YYYY-MM-DD");
        $(view.el[0]).find('.fc-day[data-date='+ date +']').css('background-color','#FAA732');
      }
    });

现在这是我通过print_r($ _ POST)得到的:

Array
(
    [common] => Common
    [start] => 2017-12-31
    [end] => 2018-02-11
) 

如您所见,结果中没有“日期”。是的,我已经“开始”了我的结果,但这是第一天在日历中可见,而不是在该月的第一天。那么,任何人都可以帮我发帖吗?

javascript php ajax fullcalendar
1个回答
1
投票

根据fullCalendar建议的方法,您应该使用自动提供的startend参数来划分服务器发送的数据,无需其他日期。然后,如果您有其他视图具有不同的时间段(如周或日),或某些具有较小/较大可见范围的自定义视图,则它将获取这些特定日期所需的确切数据。

无论如何,你的sdate值不会被传输,因为你提供的data对象是完全静态的。 fullCalendar在初始化日历时摄取它,然后保持这样。您提供了一个对象,而不是重新运行的代码,因此在发出ajax请求时无法再次检查开始日期。那时我认为视图没有intervalStart日期,因为它没有初始化。

如果你真的想做类似这种动态值的事情,那么你必须提供一个回调函数,fullCalendar可以在每个请求上实际执行并动态构建一个对象。

data: function() { // a function that returns a new object dynamically for every ajax request, instead of a static object
  return {
    sdate : $("#calendar_1").fullCalendar('getView').intervalStart,
    common : 'Common'
  };
}

但是,由于您要使用的特定值,在第一次加载日历时仍然会遇到此问题,因为当ajax请求启动时您将无法呈现视图,并且您将无法访问其属性,包括intervalStart - 他们将为空。在后续运行中,视图尚未更改,并且您将获得的intervalStart值将是您要离开的月份的值。老实说,我不认为这实际上是一种可行的方法。请参阅http://jsfiddle.net/sbxpv25p/88/以获得演示,该演示将向您显示问题。

其中大部分都记录在案并在此证明:https://fullcalendar.io/docs/event_data/events_json_feed/

© www.soinside.com 2019 - 2024. All rights reserved.