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提供的数据中正确获取您需要的信息。
我有一个 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提供的数据中正确获取您需要的信息。