Javascript 完整日历不会显示从AJAX获取的事件

Javascript 完整日历不会显示从AJAX获取的事件,javascript,jquery,date,fullcalendar,fullcalendar-4,Javascript,Jquery,Date,Fullcalendar,Fullcalendar 4,我需要使用AJAX从数据库中获取一些事件,并在我的完整日历中显示它们。问题是我的JSON提要没有开始和结束,但是所有的日期都用一个“,”隔开(例如:15-06-2020,16-06-2020)。我希望使用“”.split(“,”)”,并从那里设置值,但无法让它工作。这就是我试过的 document.addEventListener('DOMContentLoaded',function(){ var calendarEl=document.getElementById('calendar');

我需要使用AJAX从数据库中获取一些事件,并在我的完整日历中显示它们。问题是我的JSON提要没有开始和结束,但是所有的日期都用一个“
”隔开(例如:15-06-2020,16-06-2020)。我希望使用“
”.split(“,”)
”,并从那里设置值,但无法让它工作。这就是我试过的

document.addEventListener('DOMContentLoaded',function(){
var calendarEl=document.getElementById('calendar');
var calendar=新的完整日历。日历(calendarEl{
插件:['dayGrid'],
是的,
第一天:1,
eventLimit:对,
事件:函数(开始、结束、回调){
$.ajax({
键入:“获取”,
url:“http://localhost:8092/api/leavecal/getleavesbyemp/200027502420",
数据类型:“json”,
成功:功能(数据){
var eventsList=[];
var计数=0;
while(计数<数据长度){
var dateArray=data[count].date.split(',');
var startDate=dateArray[0];
var endDate=dateArray[dateArray.length-1];
事件列表推送({
开始:开始日期,
完:完日期
});
console.log(开始日期+结束日期);
计数++
}
回调(eventsList);
}
});
}
});
calendar.render();
});
假设:

  • 由于问题没有指定版本,我将假设最新的稳定版本4.4
  • 我还将提供日期数组
为了完成所有工作,您需要更改日期格式,除非

如果您将日期作为字符串
15-06-2020,16-06-2020
,只需从中创建一个简单数组并使用下面的代码即可

函数转换对象(str){
//str=“15-06-2020,16-06-2020”
return str.split(',').map(函数(elm){return{date:elm};})
}
事件签名在代码中不正确,正如@ADyson指出的那样,
(info,successCallback,failureCallback)
将事件数组传递到
successCallback([])
中,或者将任何错误传递到
failureCallback中(新错误('notgood!')
info
是您可以获取请求的数据范围的地方

函数getAllEvents(信息、成功回调、失败回调){ 常数数据=[ {日期:'15-06-2020'}, {日期:'16-06-2020'} ]; //const data=convertToObjects(); successCallback(processData(data)); } 函数processData(arr){ //[{日期;'15-06-2020'},{日期:'16-06-2020'}] 常量事件列表=[]; arr.forEach(功能(条目,i){ // 15-06-2020 -> 2020-06-15 const dt=entry.date; 常量formattedDate=`${dt.substr(6,4)}-${dt.substr(3,2)}-${dt.substr(0,2)}`; 事件列表推送({ id:`evt-${i+1}`, 开始:格式化日期, 结束:格式化日期, 标题:`事件#${i+1}` }); }); 返回事件列表; } document.addEventListener(“DOMContentLoaded”,函数(){ const calendarEl=document.getElementById(“日历”); const calendar=new FullCalendar.calendar(calendarEl{ 插件:['dayGrid'], 是的, 第一天:1, eventLimit:对, 事件:getAllEvents, }); calendar.render(); });

假设:

  • 由于问题没有指定版本,我将假设最新的稳定版本4.4
  • 我还将提供日期数组
为了完成所有工作,您需要更改日期格式,除非

如果您将日期作为字符串
15-06-2020,16-06-2020
,只需从中创建一个简单数组并使用下面的代码即可

函数转换对象(str){
//str=“15-06-2020,16-06-2020”
return str.split(',').map(函数(elm){return{date:elm};})
}
事件签名在代码中不正确,正如@ADyson指出的那样,
(info,successCallback,failureCallback)
将事件数组传递到
successCallback([])
中,或者将任何错误传递到
failureCallback中(新错误('notgood!')
info
是您可以获取请求的数据范围的地方

函数getAllEvents(信息、成功回调、失败回调){ 常数数据=[ {日期:'15-06-2020'}, {日期:'16-06-2020'} ]; //const data=convertToObjects(); successCallback(processData(data)); } 函数processData(arr){ //[{日期;'15-06-2020'},{日期:'16-06-2020'}] 常量事件列表=[]; arr.forEach(功能(条目,i){ // 15-06-2020 -> 2020-06-15 const dt=entry.date; 常量formattedDate=`${dt.substr(6,4)}-${dt.substr(3,2)}-${dt.substr(0,2)}`; 事件列表推送({ id:`evt-${i+1}`, 开始:格式化日期, 结束:格式化日期, 标题:`事件#${i+1}` }); }); 返回事件列表; } document.addEventListener(“DOMContentLoaded”,函数(){ const calendarEl=document.getElementById(“日历”); const calendar=new FullCalendar.calendar(calendarEl{ 插件:['dayGrid'], 是的, 第一天:1, eventLimit:对, 事件:getAllEvents, }); calendar.render(); });


您需要以受支持的格式提供日期,该格式不存在任何歧义。e、 g.yyyy-mm-dd更好,因为a)它受JS日期/完整日历(请参阅)的支持,b)它不能在dd-mm-yyyy和mm-dd-yyyy之间混淆。当您使用时,为什么不更改API,使其在单独的字段中输出日期呢?另外,
events:function(start,end,callback){
不正确-请参见。(我假设您从v3代码中选取了一个示例,但没有意识到。v4有不同的语法)。并且您应该将提供的开始和结束日期发送到服务器,以便服务器可以限制其显示的结果