Javascript fullCalendar和RangeError:超过最大调用堆栈大小
fullCalendar是一个日历插件,它接受一系列对象,并将它们转换为事件,呈现在自己的日历上。其中一个属性是eventDrop,它允许在日历上拖放事件 每当eventDrop发生时,我的函数都会执行$.post以将更改的日期写入数据库。但是,我得到了以下错误Javascript fullCalendar和RangeError:超过最大调用堆栈大小,javascript,php,jquery,events,fullcalendar,Javascript,Php,Jquery,Events,Fullcalendar,fullCalendar是一个日历插件,它接受一系列对象,并将它们转换为事件,呈现在自己的日历上。其中一个属性是eventDrop,它允许在日历上拖放事件 每当eventDrop发生时,我的函数都会执行$.post以将更改的日期写入数据库。但是,我得到了以下错误 RangeError: Maximum call stack size exceeded. Extend [jQuery] Extend [jQuery] ... Extend [jQuery] 这是我的职责 $('#taskCale
RangeError: Maximum call stack size exceeded.
Extend [jQuery]
Extend [jQuery]
...
Extend [jQuery]
这是我的职责
$('#taskCalendar').fullCalendar({
// put your options and callbacks here
height: calendarheight = $(window).height() - $("#nav").height() - 140,
events: courseTasks,
editable: true,
eventStartEditable: true,
eventDurationEditable: false,
eventClick: function(event, jsEvent, view) {
tbLoadData(event["id"]);
},
eventDrop: function(event, dayDelta, minuteDelta, allDay, revertFunc, jsEvent, ui, view) {
// Format date for DB
var newStart = new Date(event["start"]);
var new_due_date = newStart.format("yyyy-mm-dd HH:MM:ss");
event["due_date"] = new_due_date;
// Update in DB
updateToDB(event);
}
});
function updateToDB(data) {
$.post("./php/controllers/retrieval.php?fn=dsb_modify_task", data, function(data,status){
$.notify(data.task_name + " is saved\n" + data + "\n" + status , "success");
});
}
奇怪的是,$.post在其他地方都可以使用。除了这个功能。有没有人经历过类似的事情?我没能弄清楚到底发生了什么。我也遇到了同样的问题,但这是因为您将事件对象作为post数据发送。您必须过滤事件对象,例如,通过创建另一个对象,该对象仅具有所需的id、标题、开始、结束和全天等属性,并将其作为post数据发送 我也遇到了同样的问题,但这是因为您将事件对象作为post数据发送。您必须过滤事件对象,例如,通过创建另一个对象,该对象仅具有所需的id、标题、开始、结束和全天等属性,并将其作为post数据发送 不要发送来自eventDrop函数的事件。它有一些通过函数调用计算的值
必须创建一个新的事件对象var new_event={},并复制要发送到服务器的属性。然后您可以发送此新对象而不超过调用堆栈。不要发送来自eventDrop函数的事件。它有一些通过函数调用计算的值
必须创建一个新的事件对象var new_event={},并复制要发送到服务器的属性。然后您可以发送此新对象而不超过调用堆栈。问题在于delete event.source属性。只需删除它,您就可以:
eventDrop: function(event, dayDelta, minuteDelta, allDay, revertFunc, jsEvent, ui, view) {
delete event.source;
return $.post("/edit-event/" + event.id, event, function(data) {...}}
问题在于delete event.source属性。只需删除它,您就可以:
eventDrop: function(event, dayDelta, minuteDelta, allDay, revertFunc, jsEvent, ui, view) {
delete event.source;
return $.post("/edit-event/" + event.id, event, function(data) {...}}