Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Calling JQuery.ajax or JQuery.post from inside of one of the event callbacks results in a Type Error from Moment.min.js

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
            },

        });
    },
like image 466
NickLeach Avatar asked Jul 06 '14 10:07

NickLeach


People also ask

Which method is used on the returned object of ajax () method if the ajax call fails?

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 = $.

What does jQuery ajax return?

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.

Does jQuery return ajax promise?

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.


1 Answers

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

like image 63
PatBau Avatar answered Nov 14 '22 09:11

PatBau