gpt4 book ai didi

javascript - 数据未发布在全日历中?

转载 作者:行者123 更新时间:2023-11-30 20:51:54 25 4
gpt4 key购买 nike

我有这段代码:

$('#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
)

如您所见,结果中没有“sdate”。是的,我的结果中有“开始”,但那是日历中可见的第一天,而不是每月的第一天。那么,任何人都可以帮助我如何发布它?

最佳答案

按照 fullCalendar 的建议方法,您应该使用自动提供的 startend 参数来分隔服务器发送的数据,不需要其他日期。然后,如果您有其他具有不同时间段(例如周或天)的 View ,或者具有更小/更大可见范围的一些自定义 View ,它将获取这些特定日期所需的确切数据。

无论如何,您的 sdate 值不会被传输,因为您提供的 data 对象是完全静态的。 fullCalendar 在日历初始化时摄取它,然后保持原样。您提供了一个对象,而不是要重新运行的代码,因此在发出 ajax 请求时它无法再次检查开始日期。那时我认为 View 不会有 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 请求启动时 View 不会呈现,您将无法访问它包括 intervalStart 在内的属性 - 它们将为空。在随后的运行中, View 还没有改变,您将获得的 intervalStart 值将是您要离开的月份的值。老实说,我认为这实际上不是一个可行的方法。参见 http://jsfiddle.net/sbxpv25p/88/演示将向您展示问题。

此处记录并演示了其中大部分内容:https://fullcalendar.io/docs/event_data/events_json_feed/

关于javascript - 数据未发布在全日历中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48094830/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com