我正在使用FullCalendar制定计划,我遇到了一些障碍。我正在尝试使用事件回调函数来创建一个新事件,并将新事件的信息发送到我的php脚本,然后将该信息存储到服务器。但每当我尝试从其中一个回调中调用$ .ajax或$ .post时(我已尝试过,如果来自其中一些)我得到了这个:
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
但是因为我使用的是Moment.min.js,所以很难读出问题的来源,所以我用Moment.js替换了Moment.min.js,当错误再次弹出时,我能够阅读问题所在:
months : function (m) {
return this._months[m.month()];
},
根据我收集的内容,m在执行此函数时未定义。 这是我用来将新事件数据发布到php脚本的代码:
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
},
});
},
答案 0 :(得分:14)
我认为开始是一个时刻对象。
我遇到了同样的问题,似乎:您无法发送时刻对象,因此您需要将值作为整数或其他内容获取。
尝试使用start.calendar()
或start.format("YYYY-MM-DD");
(或类似内容)代替start
。
为我工作,希望也适合你;)
帕特里克
答案 1 :(得分:7)
我只是遇到了同样的问题(这是我发现这篇文章的原因)。
要发送整个对象,您需要对其进行字符串化。
var now = moment();
$.ajax({
url: 'http://example.com',
contentType: 'application/json',
data: JSON.stringify(now),
type: 'POST'
});
答案 2 :(得分:6)
不要直接发送start
和end
作为AJAX请求的参数。
var startDate = start.format('YYYY-MM-DD'),
endDate = end.format('YYYY-MM-DD'),
params = {'from':startDate, 'to':endDate};
$.ajax({
url: 'http://example.com',
contentType: 'application/json',
data: params,
type: 'POST'
}).done(function(data) {
console.log('Successful! ', data);
});