使用ajax将事件添加到mysql数据库

时间:2016-09-10 12:30:41

标签: php jquery mysql ajax fullcalendar

我无法添加通过弹出框输入的事件标题。

我有这个jquery代码,我放置了我的ajax代码:

 $(document).ready(function() {

 var date = new Date();
 var d = date.getDate();
 var m = date.getMonth();
 var y = date.getFullYear();

    var calendar = $('#calendar').fullCalendar({                
        editable: true,
        events: "http://localhost/test/events.php",
        selectable: true,
        selectHelper: true,
        select: function(start, end, allDay) {
         var title = prompt('Event Title:');
         if (title) {

         /*
         start = $.fullCalendar.formatDate(start, "yyyy-MM-dd HH:mm:ss");
         end = $.fullCalendar.formatDate(end, "yyyy-MM-dd HH:mm:ss");
         $.ajax({
         url: 'http://localhost/test/add_events.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 // make the event "stick"
         );
         }
         calendar.fullCalendar('unselect');
        }
    });

});

然后我有这个add_events.php,其中写入了插入查询

    <?php

    $title=$_POST['title'];
    $start=$_POST['start'];
    $end=$_POST['end'];

    // connect to the database
     try {
     $bdd = new PDO('mysql:host=localhost;dbname=fullcalendar', 'root', '');
     } catch(Exception $e) {
     exit('Can not connect to the database.');
     }

    $sql = "INSERT INTO evenement (title, start, end) VALUES (:title, :start, :end)";
    $q = $bdd->prepare($sql);
    $q->execute(array(':title'=>$title, ':start'=>$start, ':end'=>$end));
    ?>

我评论了我的default.html中的代码片段,因为我认为这就是问题所在。当我评论此代码片段时,我可以通过弹出框添加事件,并在确认事件标题后,事件标题将在我的fullCalendar中清晰可见(但尚未添加到数据库中)。但如果我&#34;取消注释&#34;那个部分,通过弹出框输入的事件标题没有出现在我的fullCalendar中(显然,它还没有添加到我的数据库中)

有人可以帮助我编辑我的ajax代码,这样我就可以通过弹出框将类型化的事件标题显示在我的fullCalendar中,并成功添加到我的数据库中。

提前致谢!

1 个答案:

答案 0 :(得分:0)

我认为您的错误在于您的Ajax调用以及在post调用中设置数据的方式。

您的数据属性应如下所示:

var start = $.fullCalendar.formatDate(start, "yyyy-MM-dd HH:mm:ss");
var end = $.fullCalendar.formatDate(end, "yyyy-MM-dd HH:mm:ss");
var title = "Title name";
$.ajax({
   url: 'http://localhost/test/add_events.php',
   data: {
      title: title, 
      start: start,
      end: end
   },
   type: "POST",
   success: function(json) {
      alert('OK');
   }
});