Javascript moment.js:423未捕获类型错误:无法读取属性'_日历';未定义的

Javascript moment.js:423未捕获类型错误:无法读取属性'_日历';未定义的,javascript,ajax,fullcalendar,momentjs,Javascript,Ajax,Fullcalendar,Momentjs,我使用的是fullcalendar,我要做的是当用户单击事件时,询问用户是否希望延长上课时间。如果用户之前取消了课程(在我的数据库中),那么用户可以将上课时间延长15分钟。因此,如果用户可以扩展该类,那么可以使用ajax和php将信息发送到mysqlDB。然而,问题是所有的信息,即endDate、startDate和canceledCourseDate,以及end(extend之前的endDate),都正确地发送到ajax,但我得到了错误 未捕获的TypeError:无法读取未定义的属性“\u

我使用的是fullcalendar,我要做的是当用户单击事件时,询问用户是否希望延长上课时间。如果用户之前取消了课程(在我的数据库中),那么用户可以将上课时间延长15分钟。因此,如果用户可以扩展该类,那么可以使用ajax和php将信息发送到mysqlDB。然而,问题是所有的信息,即endDate、startDate和canceledCourseDate,以及end(extend之前的endDate),都正确地发送到ajax,但我得到了错误

未捕获的TypeError:无法读取未定义的属性“\u calendar”

因此,我搜索了一些信息,并添加了.format(“YYYY-MM_DD HH:MM”),但仍然存在问题

下面是js代码

            var canceledList = <?php echo $json_array4; ?>; //not newlyBooked canceled Date List
            var canceledListNum = canceledList.length;
            var extensionList = <?php echo $json_array10; ?>;
            var extendedListNum = extensionList.length;
            var canceledDate = '';
            var extensionStatus = 'going';
            if(extendedListNum > 0)
            {
                canceledDate = extensionList[0]['canceledCourseDate']; //get canceledDate that is alreay in extension
            }
            else if(canceledListNum > 0)
            {
                canceledDate = canceledList[0]['canceledCourseDate']; //if there is no course that is in extension, then get new canceledDate that isn't done yet.
                extensionStatus = 'new';
            }




            var id = calEvent.id;
            var teacher = calEvent.resourceId;



            var extendedDate = moment(calEvent.start.format("YYYY-MM-DD HH:mm"));
            var end = moment(calEvent.end.format("YYYY-MM-DD HH:mm"));
            var endDate = moment(end).add(15, 'minutes');

            console.log(start);
            console.log(extendedDate);
            console.log(end);
            console.log(endDate);
            console.log(canceledDate);


            var limit = 2;
            var userDuration = '<?php echo $userDuration; ?>';

            if(userDuration == '60')
            {
                limit = 4;
            }


            if(id == '<?php echo $userID; ?>')
            {


            }
            else // extend lesson 
            {   
                    if(new Date(start) < new Date(today))
                    {
                        alert("cannot extend the class");

                    }
                    else{
                        if(canceledDate == '')
                        {
                            alert("cannot extend the class");
                        }else
                        {
                            $.ajax({
                               url:"extend.php",
                               type:"POST",
                               data:{userName: '<?php echo $name; ?>' , canceledCourseDate: canceledDate, extendedDate: extendedDate , endDate: endDate ,courseTeacher : teacher, userBranch:'<?php echo $userBranch; ?>', userID: '<?php echo $userID; ?>', duration : '<?php echo $userDuration; ?>', originalEnd : end, extensionStatus: extensionStatus},
                               success:function(response)
                               {
                                    console.log(response);
                                    $("#calendar").fullCalendar('refetchEvents');
                                    alert("Successfully extended.");
                                    location.reload();
                               }
                              });
                        }
                    }
                }
            }
var canceledList=//未新预订的取消日期列表
var canceledListNum=canceledList.length;
var extensionList=;
var extendedListNum=extensionList.length;
var canceledDate=“”;
var extensionStatus='going';
如果(extendedListNum>0)
{
canceledDate=扩展列表[0]['CanceledCoursedDate'];//获取扩展中始终存在的canceledDate
}
否则如果(canceledListNum>0)
{
canceledDate=canceledList[0]['CanceledCoursedDate'];//如果扩展中没有课程,则获取尚未完成的新canceledDate。
extensionStatus='new';
}
var id=calEvent.id;
var teacher=calEvent.resourceId;
var extendedDate=时刻(calEvent.start.format(“YYYY-MM-DD HH:MM”);
var end=力矩(calEvent.end.format(“YYYY-MM-DD HH:MM”);
var endDate=时刻(结束)。加上(15,'分钟');
console.log(启动);
console.log(extendedDate);
控制台日志(结束);
console.log(endDate);
控制台日志(取消日期);
var限值=2;
var userDuration='';
如果(userDuration='60')
{
限值=4;
}
如果(id='')
{
}
else//扩展课程
{   
if(新日期(开始)<新日期(今天))
{
警报(“无法扩展该类”);
}
否则{
如果(取消日期=“”)
{
警报(“无法扩展该类”);
}否则
{
$.ajax({
url:“extend.php”,
类型:“POST”,
数据:{userName:'',canceledCourseDate:canceledDate,extendedDate:extendedDate,endDate:endDate,CourseTacher:teacher,userBranch:'',userID:'',duration:'',originalEnd:end,extensionStatus:extensionStatus},
成功:功能(响应)
{
控制台日志(响应);
$(“#日历”).fullCalendar('refetchEvents');
警报(“成功扩展”);
location.reload();
}
});
}
}
}
}
这是控制台的图像

这是行不通的。但是,

var endDateForAdd = moment(endDate).format("YYYY-MM-DD HH:mm");
这是有效的

见此:
var endDateForAdd = moment(endDate).format("YYYY-MM-DD HH:mm");