我试图让fullCalendar反映通过AJAX对数据库所做的更改。问题是,在成功进行AJAX调用后,它不会在屏幕上更新日历。
$.ajax({
type: "POST",
url: "eventEditXHR.php",
data: {
//the data
},
success: function(text) {
$("#calendar").fullCalendar("refetchEvents");
}....
我使用的是错误的方法吗?无需重新加载整个页面,最好的方法是什么?感谢您的任何意见!
答案 0 :(得分:44)
有几种方法。有些不那么优雅。
$('#calendar').fullCalendar({ events: "json-events.php", });
只是做:
$('#calendar').fullCalendar( 'refetchEvents' );
$('#calendar').fullCalendar( 'removeEventSource', source )
$('#calendar').fullCalendar( 'addEventSource', source )
答案 1 :(得分:44)
您可以分3个步骤渲染事件。
1)删除所有活动
.fullCalendar( 'removeEvents');
2)添加事件源
.fullCalendar( 'addEventSource', events);
3)渲染事件
.fullCalendar( 'rerenderEvents' );
...一样
$.ajax({
type: "POST",
url: "eventEditXHR.php",
data: { //the data },
success: function(events)
{
$('#calendar').fullCalendar('removeEvents');
$('#calendar').fullCalendar('addEventSource', events);
$('#calendar').fullCalendar('rerenderEvents' );
}.
});
答案 2 :(得分:3)
这适用于ASP.NET CORE,MVC 6:
success: function(events)
{
$('#calendar').fullCalendar('rerenderEvents');
$('#calendar').fullCalendar('refetchEvents');
}
虽然这在ASP.NET MVC 5中起作用:
success: function(events)
{
$('#calendar').fullCalendar('refetchEvents');
}
答案 3 :(得分:1)
什么对我有用:
success: function(text) {
setTimeout(function(){
$("#calendar").fullCalendar("rerenderEvents");
},50);
}
如果我在没有超时的情况下直接执行它,它不起作用,可能是由于$ element.fullCalendar变量尚未完全设置?
答案 4 :(得分:1)
对于FullCalendar v3.8.0,以下内容将起作用:
var events = [
{title: 'Business Lunch', start: '2017-12-03T13:00:00'},
{title: 'Meeting', start: '2017-12-13T11:00:00'},
{title: 'Conference', start: '2017-12-18', end: '2017-12-20'},
];
$('#calendar').fullCalendar({
defaultDate: '2017-12-12',
events: function (start, end, tz, callback) {
callback(events);
}
});
events.push({title: 'Party', start: '2017-12-29T20:00:00'});
$('#calendar').fullCalendar('refetchEvents');
答案 5 :(得分:1)
一行完成工作:
$('#calendar').fullCalendar('refetchEventSources', 'eventEditXHR.php')
延迟回复,但这应该是自2.8.0以来最有效的方式
答案 6 :(得分:0)
eventDrop: function (event, delta, revertFunc) {
var id = event.id;
var start = event.start.format();
$.ajax({
url: getURLRoot() + 'Diary/UpdateEventTimestamp',
type: "POST",
data: { id: id, start: start },
success: function () {
$('#calendar').fullCalendar('refetchEvents');
}
});
}
答案 7 :(得分:0)
如果您在 ajax 成功函数中调用 refetchevents,它将无法工作,因为我相信它是异步的。但是你可以做的是调用ajax完整函数中的refetchevents。
$.ajax({
type: "POST",
url: "/TaxCalendar/CreateEvent",
data: JSON.stringify({ jdata: json }),
//data: jdata,
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (events) {
}, complete: function () {
//Call Refetch function here.
$('#calendar').fullCalendar('refetchEvents');
}
});