Fullcalendar插件的功能不能正确插入mysql表

时间:2015-03-15 18:16:02

标签: javascript mysql ajax fullcalendar

我使用FullCalendar插件来创建一个Web日历,并从我的mysql表中显示/插入事件。它正确显示了bd中的事件,但是没有以正确的格式插入事件的日期。 (YYYY-MM-DD)。 mysql表的两列都是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');

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

该功能未正确收到实际日期,只在我的桌子上插入" 0000-00-00" 。我尝试在moment()参数中传递日期,如:

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

start = $ .fullCalendar.moment(date);

但它插入" 0000-00-00"太

2 个答案:

答案 0 :(得分:0)

javascript函数date.getMonth()将在3月份返回2,但你想要'03'

所以请使用:

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

答案 1 :(得分:0)

您的格式不正确,因此您实际上正在返回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');

样本

&#13;
&#13;
$('#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... */
    }
  }
});
&#13;
<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>
&#13;
&#13;
&#13;