$('#calendar').fullCalendar('updateEvent ',events[i]); 私の ajax の成功呼び出しで(最後のコード スニペットを確認してください)
これは私の関数呼び出しの構造です:
eventReceive 関数内で addEventSource を呼び出しているため、要素がカレンダーにドラッグされると、これが削除され、定期的なイベントが追加されます。
eventReceive : function(event) {
...
$('#calendar').fullCalendar('removeEvents', event._id);
$('#calendar').fullCalendar( 'addEventSource',function(start, end, status, callback) {
addEventSource 内では、イベントがドロップされた曜日を確認し、同じ日の次の日に複製します。
$('#calendar').fullCalendar( 'addEventSource',function(start, end, status, callback) {
var start_date = event.start.toDate();
var stop_date = new Date("2017-01-15"); // for testing purposes to avoid filling up database with too many entries
var events = [];
...
for (loop = start_date.getTime(); (loop <= end._d.getTime()) && (loop <= stop_date); loop = loop + (24 * 60 * 60 * 1000)) {
...
var test_date = new Date(loop);
var momentOfDate = moment(test_date);
var formattedStart = momentOfDate.format("YYYY-MM-DDTHH:mm:ss");
...
if (test_date.getDay() == event.start.weekday()) {
events.push({
title: event.title,
start: formattedStart,
end: // same procedure for end as start
parent_id : // some variable
id: // some unique variable,
tDuration : event.tDuration,
dow : ''
});
} //if
} // for loop
callback(events);
コールバックの後、新しく作成されたイベントをデータベースに追加したいと思います。そして、これはうまく機能します。私が追加したすべての定期的なイベントはデータベースにあります。関数呼び出しですが、イベントを移動したときにデータベースが更新されるように、ページをリロードする必要があります。これは ajax 呼び出しです。
for (i = 0 ; i < events.length-1 ; i++) {
var duration = events[i].tDuration;
$.ajax({
url: 'process.php',
data: 'type=new&title='+events[i].title+'&startdate='+events[i].start+'&duration='+duration+'&enddate='+events[i].end+'&dow='+events[i].dow,
type: 'POST',
dataType: 'json',
success: function(response){
//location.reload(); WORKS but requires reload
$('#calendar').fullCalendar('updateEvent',events[i]); // generates typeError but needed in order modify recurring events
},
error: function(e){
alert('error');
console.log(e.responseText);
}
})
}
この状況で私は何をしますか?単一のイベントを問題なく追加し、エラーなしで同じバージョンの ajax を実行できます。eventReceive 関数で引数として渡されたイベントを使用する代わりに、自分の「イベント」配列のイベントにアクセスしようとすると問題が発生します。電話。しかし、私は複数のイベントを追加しているので、私がやっているように思われる方法でそれを行うことを余儀なくされています.
ソロイベントのコード (WORKS!):
eventReceive : function(event) {
var title = event.title;
var start = event.start.format();
var end = event.end.format();
var duration = event.tDuration;
var dow ='';
$.ajax({
url: 'process.php',
data: 'type=new&title='+title+'&startdate='+start+'&duration='+duration+'&enddate='+end+'&dow='+dow,
type: 'POST',
dataType: 'json',
success: function(response){
event.id = response.eventid;
$('#calendar').fullCalendar('updateEvent',event);
},
error: function(e){
alert('error');
console.log(e.responseText);
}
});
削除された試行 1 cus は、機能する解決策を自分で見つけました