I am working on a schedule using FullCalendar and i have hit a bit of a snag. I am trying to use the event callback functions to create a new event, and send the new event's information to my php script which then stores the information to the server. But whenever i try to call $.ajax or $.post from within one of the callbacks (and i have tried if from with in a few of them) i get this:
Uncaught TypeError: Cannot read property 'month' of undefined moment.js:684
extend.monthsShort moment.js:684
e jquery.min.js:4
Bc jquery.min.js:4
Bc jquery.min.js:4
Bc jquery.min.js:4
n.param jquery.min.js:4
n.extend.ajax jquery.min.js:4
$.fullCalendar.select advisorSchedule.js:141
Q fullcalendar.min.js:6
s fullcalendar.min.js:7
a fullcalendar.min.js:7
(anonymous function) fullcalendar.min.js:6
d jquery.min.js:3
n.event.dispatch jquery.min.js:3
r.handle
But because i was using Moment.min.js it was kinda hard to read where the problem was coming from, so i replaces Moment.min.js with Moment.js, and when the error popped up again i was able to read where the problem was:
months : function (m) {
return this._months[m.month()];
},
From what i gathered, m is undefined by the time this function is executed. Here is the code i used to post the new event data to the php script:
select:function(start, end, jsEvent, view){
CURRENT_SELECTION_START = start;
CURRENT_SELECTION_END = end;
console.log(CURRENT_SELECTION_START + '-' + CURRENT_SELECTION_END);
$.ajax({
url:'../AJAX/save_event.php',
type: 'POST',
data: {
Start_Time: start,
Event_Title: prompt('Title'),
End_Time: end
},
});
},
If an AJAX request fails, you can react to the failure inside the callback function added via the fail() function of the object returned by the $. ajax() function. Here is a jQuery AJAX error handling example: var jqxhr = $.
The $.ajax() function returns the XMLHttpRequest object that it creates. Normally jQuery handles the creation of this object internally, but a custom function for manufacturing one can be specified using the xhr option.
JQuery does all that and calls success callback if call succeed or error callback if it fails. Jquery also support promise out of box. $. ajax returns a promise object, so that we don't have to pass a callback function.
I assume start is a moment-object.
I had the same problem and it seems: you can't send the moment-object, so you need to get the value as an integer or something else.
Try start.calendar()
or start.format("YYYY-MM-DD");
(or something similar) instead of start
.
worked for me, hopefully for you too ;)
Patrick
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With