"Uncaught TypeError: Cannot read property 'Klon' von undefined" beim hinzufügen wiederkehrende Ereignisse zu Datenbank

Aus irgendeinem Grund, den ich bin immer ""Uncaught TypeError: Cannot read property 'Klon' von undefined", wenn ich versuche zu aktualisieren, die Kalender mit einer aktuellen Reihe wiederkehrender event mit $('#calendar').fullCalendar('updateEvent',Termine[i]); in der " call of meinen ajax - (überprüfen Sie die letzten code-snippet)

Dies ist die Struktur meiner Funktion aufrufen:

Ich rufe addEventSource innerhalb der eventReceive-Funktion, so dass, wenn ein element gezogen wird, um den Kalender, diese werden gelöscht und der wiederkehrenden Ereignisse werden Hinzugefügt:

eventReceive : function(event) {
    ...
     $('#calendar').fullCalendar('removeEvents', event._id);
    $('#calendar').fullCalendar(  'addEventSource',function(start, end, status,  callback) {    

Innen addEventSource, ich wähle einfach den Tag der Woche, dass der Fall fallen gelassen wurde und auf duplizieren, die für die kommenden Tage mit dem gleichen Tag:

$('#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);

Nach dem Rückruf, wir möchten, fügen Sie den neu erstellten Ereignisse in die Datenbank. Und das funktioniert gut, jedem wiederkehrenden Ereignis Hinzugefügt habe ich in die Datenbank, WENN ich ausschließen "$('#calendar').fullCalendar('updateEvent',Termine[i]);" Funktion aufrufen, aber dann muss ich die Seite neu laden um die Datenbank zu aktualisieren, wenn ich mich bewege, Veranstaltungen rund um. Dies ist der ajax-call:

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);
                }
            })
        }

Was kann ich tun in dieser situation? Kann ich ohne Probleme hinzufügen ein einzelnes Ereignis, und führen Sie eine identische version des ajax ohne Fehler, das problem tritt auf, wenn ich versuche, Zugriff auf die Ereignisse in meinem eigenen 'events' array anstatt das Ereignis als argument übergeben in der eventReceive Aufruf der Funktion. Aber da bin ich hinzufügen mehrerer Ereignisse bin ich irgendwie gezwungen, es zu tun, die ich Tue, wie es scheint.

Code für solo-Veranstaltung (FUNKTIONIERT!):

 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);
                }
            });

entfernt attempt1 cus eine Lösung gefunden, selbst das funktionierte

InformationsquelleAutor jones | 2016-12-18

Schreibe einen Kommentar