我正在尝试使用更新的事件开始日期更新我的数据库,我将其拖动到新的一天。我有一个保存按钮,运行'clientEvents'方法返回所有事件以插入/更新到数据库。我的问题是当一个事件被拖到新的一天时,返回正确的事件开始日期。
到目前为止我这样做是为了更新事件数据:
$('#calendar').fullCalendar({
eventDrop: function(event, delta, element) {
event.title = "NEW TITLE!";
event.start = event.start.format();
event.color = "blue";
console.log(event.start.format());
console.log(event.start);
console.log(event.start._i);
console.log(event.title);
console.log(event.color);
$('#calendar').fullCalendar('updateEvent', event); //update the event data
}
})
和我的函数返回所有事件:
function saveEvents() {
//get events array
var events = $('#calendar').fullCalendar('clientEvents');
console.log(events);
}
但是,使用此代码,标题和颜色更新正常,但开始日期不会更新。使用console.log,新标题和颜色正确返回,但开始日期是原始日期,而不是事件被拖动到的新日期。我的saveEvents函数返回的事件数据也是如此:新标题和颜色是正确的,但不是开始日期。
奇怪的是,在我记录event.start的3种方式中,只有event.start.format()显示正确的新日期。如何保存新日期,以便在调用'clientEvents'时,返回正确的新数据?
答案 0 :(得分:1)
你能解释一下“原始日期”与“新约会”相比你的意思吗?因为您似乎没有更新开始日期,因为您只修改其格式。
答案 1 :(得分:0)
创建开始的时刻副本,格式化并附加到新事件。在fullCalendar的初始化中将ajax调用放入eventDrop回调中。使用php和mysql的示例解决方案:
$('#calendar').fullCalendar({
eventDrop: function(event, delta, element) {
var event_format = event;
event_format.start = moment(event.start).format();
$.ajax({
url : "script.php",
data : event=JSON.stringify(event_format),
type : "POST"
});
}
})
PHP:
<?php
$event = json_decode($_POST['event']);
$query = "UPDATE x SET start = '$event->start'";
mysql_query($query) or die ($query);
?>
为结束日期做同样的事情是个好主意:)