Javascript 发送/获取JSON数据时发生fullcalendar错误

Javascript 发送/获取JSON数据时发生fullcalendar错误,javascript,json,fullcalendar,Javascript,Json,Fullcalendar,我正在尝试使用FullCalendar创建一个单页CRUD应用程序。事实上,我做到了。我只是在创建事件然后删除它们时出错。当在现有事件上单击我的应用程序时,必须将其删除。但我得到如下所示的错误 这是我的事件对象。 你能帮我找出问题所在吗 javascript代码如下所示: var教师id=2; 函数addEventToDB(教师姓名、教师id、标题、开始、结束、颜色){ axios.post(‘事件’{ 教师姓名:教师姓名, 用户id:教师id, 标题:标题,, 开始:开始, 完:完,,

我正在尝试使用FullCalendar创建一个单页CRUD应用程序。事实上,我做到了。我只是在创建事件然后删除它们时出错。当在现有事件上单击我的应用程序时,必须将其删除。但我得到如下所示的错误

这是我的事件对象。

你能帮我找出问题所在吗

javascript代码如下所示:

var教师id=2;
函数addEventToDB(教师姓名、教师id、标题、开始、结束、颜色){
axios.post(‘事件’{
教师姓名:教师姓名,
用户id:教师id,
标题:标题,,
开始:开始,
完:完,,
颜色:颜色
})
.然后(功能(响应){
控制台日志(响应);
})
.catch(函数(错误){
console.log(错误);
});
}
函数deleteEventFromDB(事件id、教师姓名){
axios.delete('/events/'+event_id)
.然后(功能(响应){
控制台日志(响应);
})
.catch(函数(错误){
console.log(错误);
});
}
var eventType=‘个人’;
var eventTitle='可用于个人';
var eventColor='橙色';
$(函数(){
//页面现在已准备就绪,请初始化日历。。。
$(“#日历”).fullCalendar({
//把你的选择和回电放在这里
主题系统:“bootstrap4”,
defaultView:'agendaWeek',
全天时段:错,
slotEventOverlap:错误,
慢速持续时间:“00:30:00”,
slotLabelInterval:“01:00”,
滚动时间:“08:00:00”,
事件:“事件”,
//defaultTimedEventDuration:'00:30:00',
页脚:{
中心:“eventTypeButton”
},
自定义按钮:{
事件类型按钮:{
文本:“事件类型切换按钮(组/个人)”,
单击:函数(){
if(eventType=='Individual'){
eventType='Group';
eventTitle='可用于组';
eventColor='蓝色';
}否则{
eventType='individualal';
eventTitle='可供个人使用';
eventColor='橙色';
}
}
}
},
dayClick:函数(日期、事件、视图){
end=date.clone();
end=end.add(30,'minutes');
$(“#日历”).fullCalendar('renderEvent'{
标题:eventTitle,
老师:老师,
教师姓名:教师姓名,
开始:date.format(),
end:end.format(),
全天:错,
颜色:eventColor
});
var title=eventTitle;
var start=date.format();
var end=end.format();
var color=eventColor;
var teacher_name=“{{Auth::user()->name}”;
addEventToDB(教师姓名、教师id、职称、开始、结束、颜色);
},
eventClick:函数(事件、jsEvent、视图){
$(“#日历”).fullCalendar('rerenderEvents');
console.log(event.id);
deleteEventFromDB(event.id,event.teacher\u name);
$('#calendar').fullCalendar('removeEvents',event.id);
$(“#日历”).fullCalendar('rerenderEvents');
},
})
});

仪表板
我的日历

事件
对象在
eventClick()
中没有
id
属性,将
id
更改为
\u id

        eventClick: function(event, jsEvent, view) {
            $('#calendar').fullCalendar( 'rerenderEvents' );
            deleteEventFromDB(event._id,event.teacher_name);
            $('#calendar').fullCalendar('removeEvents',event._id);
            $('#calendar').fullCalendar( 'rerenderEvents' );
        },

问题是因为您添加事件的过程存在缺陷-您正在将事件添加到日历中,而没有等待服务器为其发送有效ID。因此,通过在日历中单击该事件,永远无法在服务器中删除或更新该事件。它与数据库中记录的事件没有关系


您必须首先将事件数据发送到服务器,在响应中获取自动生成的ID,然后将其记录为传递到fullCalendar“renderEvent”中的事件对象的一部分。如果您不这样做,那么如果您尝试更新或删除该事件,它就没有服务器可以识别的ID。

谢谢您的建议,我可以制定一个解决方案。事实上,这个问题是一个同步问题,每次我单击创建一个新事件并单击将其删除时,所有事件都会被重新提取,问题就解决了。我在下面分享解决问题的代码

函数addEventToDB(教师姓名、教师id、标题、开始、结束、颜色){
axios.post(‘事件’{
教师姓名:教师姓名,
用户id:教师id,
标题:标题,,
开始:开始,
完:完,,
颜色:颜色
})
.然后(功能(响应){
$(“#日历”).fullCalendar('refetchEvents');
控制台日志(响应);
})
.catch(函数(错误){
$(“#日历”).fullCalendar('refetchEvents');
console.log(错误);
});
}
函数deleteEventFromDB(事件id、教师姓名){
axios.delete('/events/'+event_id)
.然后(功能(响应){
$(“#日历”).fullCalendar('refetchEvents');
控制台日志(响应);
})
.catch(函数(错误){
$(“#日历”).fullCalendar('refetchEvents');
console.log(错误);
});
}
var eventType=‘个人’;
var eventTitle='可用于个人';
var eventColor='橙色';
$(函数(){
//页面现在已准备就绪,请初始化日历。。。
$(“#日历”).fullCalendar({
//把你的选择和回电放在这里
主题系统:“bootstrap4”,
defaultView:'agendaWeek',
全天时段:错,
slotEventOverlap:错误,
慢速持续时间:'00:30:00