如何在fullCalendar

时间:2015-05-20 16:51:38

标签: javascript fullcalendar

我正在尝试使用更新的事件开始日期更新我的数据库,我将其拖动到新的一天。我有一个保存按钮,运行'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'时,返回正确的新数据?

2 个答案:

答案 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);
 ?>

为结束日期做同样的事情是个好主意:)