_agenda-views
_でnext-previous-buttonをクリックしたときに、AJAXを使用してFullCalendarのすべてのイベントをロードします。
next-previous-buttonをクリックすると、現在のdate('y-m-d')
を_url: 'fetch-events.php'
_に送信し、その後_event{ id: ,title: , start: , end: , allDay: }
_形式のデータを返しますカレンダーでのレンダリング
_$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
selectable: false,
selectHelper: false,
editable: false,
events: // on-click next-previous button load events using Ajax
// post date using Ajax, then query to fetch all events and return data
});
_
私の場合、JSONが機能しない
FullCalendarオンラインドキュメントから
FullCalendarは、新しいイベントデータが必要になるたびにこの関数を呼び出します。これは、ユーザーが前/次をクリックするか、ビューを切り替えるとトリガーされます。
この関数には、startおよびendパラメーターが与えられます。 Moments カレンダーがイベントを必要とする範囲を示します。
timezoneは、カレンダーの現在のタイムゾーンを記述する文字列/ブール値です。 timezone オプションの正確な値です。
また、カスタムイベント関数がイベントを生成したときに呼び出す必要がある関数callbackも与えられます。 callbackが Event Objects の配列で呼び出されていることを確認するのは、イベント関数の責任です。
次に、イベント関数を使用して、仮想のXMLフィードからイベントを取得する方法を示す例を示します。
$('#calendar').fullCalendar({
events: function(start, end, timezone, callback) {
$.ajax({
url: 'myxmlfeed.php',
dataType: 'xml',
data: {
// our hypothetical feed requires UNIX timestamps
start: start.unix(),
end: end.unix()
},
success: function(doc) {
var events = [];
$(doc).find('event').each(function() {
events.Push({
title: $(this).attr('title'),
start: $(this).attr('start') // will be parsed
});
});
callback(events);
}
});
}
});
私はいくつかの小さな変更を加えました:
$('#calendar').fullCalendar({
events: function(start, end, timezone, callback) {
jQuery.ajax({
url: 'schedule.php/load',
type: 'POST',
dataType: 'json',
data: {
start: start.format(),
end: end.format()
},
success: function(doc) {
var events = [];
if(!!doc.result){
$.map( doc.result, function( r ) {
events.Push({
id: r.id,
title: r.title,
start: r.date_start,
end: r.date_end
});
});
}
callback(events);
}
});
}
});
注:start
およびend
[〜#〜] must [〜 #〜]be ISO 8601 もう1つの変更は、format
の代わりにunix
を使用したことです(これにより、コードビハインドに対処しやすくなりました)。
あなたはFullCalendarオンラインドキュメントで答えを持っています: http://arshaw.com/fullcalendar/docs/event_data/events_function/
This is perfect way to load data properly.
// if you want to empty events already in calendar.
$('#calendar').fullCalendar('destroy');
$.ajax({
url: 'ABC.com/Calendar/GetAllCalendar/',
type: 'POST',
async: false,
data: { Id: 1 },
success: function (data) {
obj = JSON.stringify(data);
},
error: function (xhr, err) {
alert("readyState: " + xhr.readyState + "\nstatus: " + xhr.status);
alert("responseText: " + xhr.responseText);
}
});
/* initialize the external events
-----------------------------------------------------------------*/
$('#external-events div.external-event').each(function () {
// create an Event Object (http://arshaw.com/fullcalendar/docs/event_data/Event_Object/)
// it doesn't need to have a start or end
var eventObject = {
title: $.trim($(this).text()) // use the element's text as the event title
};
// store the Event Object in the DOM element so we can get to it later
$(this).data('eventObject', eventObject);
// make the event draggable using jQuery UI
$(this).draggable({
zIndex: 999,
revert: true, // will cause the event to go back to its
revertDuration: 0 // original position after the drag
});
});
/* initialize the calendar
-----------------------------------------------------------------*/
var date = new Date();
var d = date.getDate();
var m = date.getMonth();
var y = date.getFullYear();
var calendar = $('#calendar').fullCalendar({
//isRTL: true,
buttonHtml: {
prev: '<i class="ace-icon fa fa-chevron-left"></i>',
next: '<i class="ace-icon fa fa-chevron-right"></i>'
},
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
//obj that we get json result from ajax
events: JSON.parse(obj)
,
editable: true,
selectable: true
});