【发布时间】:2018-12-11 23:50:42
【问题描述】:
我想通过全日历向我的数据库添加事件。所以我想添加一个事件并将其 id 设置为它在我的数据库中获得的 id。
function addCalEvent(event) {
var jEvent = {};
jEvent['startTime'] = moment(event.start).unix();
jEvent['worker']="GUZ"
jEvent['title']=event.title;
if (event.end) {
jEvent['endTime'] = moment(event.end).unix();
}
$.ajax({
url: 'dux.html',
type: 'POST',
data: {
type: 'addNewEvents',
event: jEvent,
REQUEST_TOKEN: "REQUEST_TOKEN>",
},
datatype: 'json',
success: function(data) {
event.id=data;
event.title="NEW";
$('#calendar').fullCalendar('updateEvent', event);
},
});
}
ajax 检索添加事件的 id,并且 id 和 title 确实发生了变化,但似乎没有调用 'updateEvent' 方法,因为呈现的事件标题或 id 没有变化。
【问题讨论】:
-
您如何将新活动添加到日历中?
-
我在'dayClick'函数中调用'renderEvent',之后调用addCalEvent。
-
event.id=data这确实是我认为的问题。更改 ID 后,fullCalendar 无法将其与现有事件匹配(因为如果您在第一次创建事件时没有提供事件 ID,fullCalendar 会自动为您分配一个)。但是你的逻辑是从头到尾的......你应该做的是首先将事件数据发送到你的服务器,然后取回 ID。只有这样,当您知道服务器已接受事件并成功保存它时,您是否应该使用 renderEvent 在 fullCalendar 中创建事件。然后你根本不需要 updateEvent。 -
@ADyson 我同意 ADyson 的观点。根据文档,您无法更新自己创建的事件,它必须是来自日历的事件,例如事件在
eventClick返回。所以我认为最好的做法是 ADyson 建议的,发送ajax请求以在dayClick事件中从您的数据库中获取事件ID,然后使用该ID,创建您的事件,然后调用renderEvent跨度>
标签: javascript jquery fullcalendar