我正在尝试使用我将事件的更新开始日期更新到新的一天。我有一个运行"客户端"方法的保存按钮,可以返回所有事件以插入/更新到数据库。我的问题是在将事件拖到新的一天时返回正确的事件开始日期。
我正在执行此操作以更新事件数据:
$('#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.format()显示正确的新日期。如何保存新日期,因此当调用"客户端"时,返回正确的新数据?
您能解释一下"原始日期"的含义,而"新日期"应该是什么?因为您似乎没有更新开始日期,因为您仅修改其格式。
创建一个开始的矩副本,格式化并附加到新事件。将您的Ajax调用在EventDrop回调中,以在FullCalendar的初始化中。使用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);
?>
为终点做同样的事情是一个好主意:)