AJAX 尝试更新时未使用 FullCalendar 发布数据

AJAX data not posting using FullCalendar when trying to update

我有一个 calendar.php 文件,它查找“php/get-events”以显示数据库中的日历事件(目前按预期工作)。我正在尝试使用“php/calendarupdate”然后使用已拖动的新 start/end 次更新数据库,但是发布到此页面的数据总是返回为未定义,因此找不到它一些原因。

"Calendar.php"

<script>
  document.addEventListener('DOMContentLoaded', function() {
    var calendarEl = document.getElementById('calendar');

    var calendar = new FullCalendar.Calendar(calendarEl, {
      headerToolbar: {
        left: 'prev,next today',
        center: 'title',
        right: 'dayGridMonth,timeGridWeek,timeGridDay,listWeek'
      },
      initialDate: '2021-03-18',
      editable: true,
      
    eventDrop: function(event, delta) {
   start=moment(event.start).format('Y-MM-DD HH:mm:ss');
   end=moment(event.end).format('Y-MM-DD HH:mm:ss');
   $.ajax({
   url: 'php/calendarupdate.php',
   data: 'title=' + event.title + '&start='+ event.start +'&end=' + event.end + '&id=' + event.id ,
   type: "POST",
   success: function(json) {   
    alert("Updated Successfully");
   }
   });
   },
      navLinks: true, // can click day/week names to navigate views
      dayMaxEvents: true, // allow "more" link when too many events
      events: {
        url: '/php/get-events.php',
        failure: function() {
          document.getElementById('script-warning').style.display = 'block'
        }
      },
      loading: function(bool) {
        document.getElementById('loading').style.display =
          bool ? 'block' : 'none';
      }
    });
    calendar.render();
  });
</script>

以下是我在日历上成功显示事件的数据。

"php/get-events.php"

$stmt = $pdo->prepare("Select id,task_name,start,end,notes,task_type,status from tasks where attendees like ".$attendees);
$stmt->execute();
//$stmt->debugDumpParams();
foreach ($stmt as $row){
    $rawdata[] = array('id' => $row['id'], 'title'=> $row['task_name'], 'start'=> $row['start'], 'end'=> $row['end']);
}
$rawdata = json_encode($rawdata);
echo $rawdata;

以下是更新文件,可以正常使用,但是我尝试显示的回显都是未定义的。

/* Values received via ajax */
echo "id -".$_POST['id'];
echo "start -".$_POST['start'];
echo "end -".$_POST['end'];

// update the records
$stmt = $pdo->prepare('UPDATE tasks SET start=?, end=? WHERE id=?');
$stmt->execute($_POST['start'], $_POST['end'], $_POST['id']);
$stmt->debugDumpParams();

这可能很简单,但从我阅读的文档来看,我似乎无法弄清楚为什么我的变量没有成功发布。谢谢

您的 eventDrop 签名语法错误。参见 https://fullcalendar.io/docs/eventDrop

应该是

eventDrop: function(info) {

然后替换

event.start

event.end

info.event.start

info.event.end

这将从fullCalendar提供的数据中正确获取您需要的信息。