Fullcalendar 插件的功能未在 mysql table 上正确插入

Function of Fullcalendar plugin dont insert correctly on mysql table

我正在使用 FullCalendar 插件从我的 mysql table 获取网络日历和 show/insert 事件。它正确显示了 bd 中的事件,但没有以正确的格式插入事件的日期。 (YYYY-MM-DD)。 mysql table 的两列都是 DATE 类型,与将要插入的事件的格式相同。

这是我的 JS 脚本,用于显示事件并通过 ajax 插入到 mysql

$(document).ready(function() {

var date = new Date();
var dd = date.getDate();
var mm = date.getMonth();
var yyyy = date.getFullYear();

var calendar = $('#calendar').fullCalendar({
 editable: true,
 events: "http://localhost/test-fullcalendar/php/eventos.php",
 lang: "es",
 selectable: true,
 selectHelper: true,

 select: function(start, end, allDay) {
  var title = prompt('Evento a insertar:');
   if (title) {
    start = $.fullCalendar.moment('yyyy mm dd');
   end = $.fullCalendar.moment('yyyy mm dd');
    $.ajax({
     url: 'http://localhost/test-fullcalendar/php/add_evento.php',
     data: 'title='+ title+'&start='+ start +'&end='+ end ,
     type: "POST",
     success: function(json) {
     alert('OK');
     }
    });
    calendar.fullCalendar('renderEvent',
    {
     title: title,
     start: start,
     end: end,
     allDay: allDay
    },
    true
    );
   }
   calendar.fullCalendar('unselect');
 }

});
});

问题出在 Fullcalendar 的函数 moment() 上:

start = $.fullCalendar.moment('yyyy mm dd');

end = $.fullCalendar.moment('yyyy mm dd');

函数没有正确接收实际日期,只在我的 table 上插入 "0000-00-00"。我尝试在 moment() 参数中传递日期,例如:

var date = yyyy + '-' + mm + '-' + dd;

开始=$.fullCalendar.moment(日期);

但它也插入“0000-00-00”。

javascript 函数 date.getMonth() 将 return 2 表示 3 月,但您想要 '03'

所以使用这个:

var mm = date.getMonth()+1;
mm=(mm<=9)?'0'+mm:mm;

您的格式不正确,因此您实际上返回的是 NaN

在传递 'yyyy mm dd' 的地方,您应该传递 start 变量,因此:

$.fullCalendar.moment('yyyy mm dd');

应该是

$.fullCalendar.moment(start).format('YYYY MM DD');

此外,请注意,根据 the Moment.js site,您的日期格式必须是大写的,可以更简单地写成 moment(start).format('YYYY MM DD');

演示

$('#fullCal').fullCalendar({
  header: {
    left: '',
    center: 'prev title next today',
    right: ''
  },
  selectable: true,
  select: function(start, end, allDay) {
    var title = prompt('Evento a insertar:');
    if (title) {
      start = moment(start).format('YYYY MM DD');
      end = moment(end).format('YYYY-MM-DD'); /* w/ dashes if that is what you need */
      alert('start: ' + start + ' end: ' + end);
      /*rest of your code... */
    }
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.3/moment.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/2.1.1/fullcalendar.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/2.1.1/fullcalendar.min.js"></script>

<div id="fullCal"></div>