javascript - 发布在 Ajax 中无法将输入保存到数据库

标签 javascript php jquery mysql ajax

我正在尝试通过 ajax 在完整日历上保存事件。

我已经测试了用于插入事件的 php,它工作正常。所以我意识到事件不是通过ajax传递的。

它们不会被传递用于插入或更新。

<script>

$(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,
    header: {
    left: 'prev,next today',
    center: 'title',
    right: 'month,agendaWeek,agendaDay'
   },

  events: "events.php",

   // Convert the allDay from string to boolean
   eventRender: function(event, element, view) {
   if (event.allDay === 'true') {
      event.allDay = true;
   } else {
     event.allDay = false;
    }
 },
  selectable: true,
  selectHelper: true,
  select: function(start, end, allDay) {
  var title = prompt('Event Title:');
  var url = prompt('Type Event url, if exits:');
  if (title) {
    var start = $.fullCalendar.moment(start);
    var end = $.fullCalendar.moment(end);
  $.ajax({
     url: 'add_events.php',
     data: 'title='+ title+'&start='+ start +'&end='+ end +'&url='+ url ,
     type: "POST",
     success: function(json) {
     alert('Added Successfully');
    }
   });
   calendar.fullCalendar('renderEvent',
  {
   title: title,
   start: start,
   end: end,
   allDay: allDay
  },
  true // make the event "stick"
  );
 }
  calendar.fullCalendar('unselect');
 },

 editable: true,
 eventDrop: function(event, delta) {
 var start = $.fullCalendar.moment(event.start);
 var end = $.fullCalendar.moment(event.end);
 $.ajax({
   url: 'update_events.php',
   data: 'title='+ event.title+'&start='+ start +'&end='+ end +'&id='+ event.id ,
   type: "POST",
   success: function(json) {
   alert("Updated Successfully");
   }
 });
 },
 eventResize: function(event) {
 var start = $.fullCalendar.moment(event.start);
 var end = $.fullCalendar.moment(event.end);
  $.ajax({
   url: 'update_events.php',
   data: 'title='+ event.title+'&start='+ start +'&end='+ end +'&id='+ event.id ,
  type: "POST",
  success: function(json) {
  alert("Updated Successfully");
  }
 });

 }

 });

});

</script>

这是插入代码(add_events.php)

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


// connection to the database
try {
  $bdd = new PDO('mysql:host=localhost;dbname=fullcalendar', 'umar', 'Umar@295');
 } catch(Exception $e) {
   exit('Unable to connect to database.');
 }

 // insert the records
   $sql = "INSERT INTO evenement (title, start, end, url) VALUES (:title, :start, :end, :url)";

   $q = $bdd->prepare($sql);
   $q->execute(array(':title'=>$title, ':start'=>$start, ':end'=>$end,  ':url'=>$url));

这是用于更新事件的 update_events :

 /* Values received via ajax */
 $id = $_POST['id'];
 $title = $_POST['title'];
 $start = $_POST['start'];
 $end = $_POST['end'];

 // connection to the database
 try {
   $bdd = new PDO('mysql:host=localhost;dbname=fullcalendar', 'umar', 'Umar@295');
  } catch(Exception $e) {
   exit('Unable to connect to database.');
  }
 // update the records
 $sql = "UPDATE `evenement` SET 'title'=?, 'start'=?, 'end'=? WHERE 'id'=?";
 $q = $bdd->prepare($sql);
 $q->execute(array($title,$start,$end,$id));

如果有人能指出我如何让​​ Ajax 中的 POST 工作或者我做错了什么,我将不胜感激。

最佳答案

正如我在评论中所述,您在 UPDATE 中的列使用了不正确的标识符限定符,是常规引号 ' 而不是刻度。

引用:

这就是你所拥有的

$sql = "UPDATE `evenement` SET 'title'=?, 'start'=?, 'end'=? WHERE 'id'=?";

这就是它应该读成的内容

$sql = "UPDATE `evenement` SET `title`=?, `start`=?, `end`=? WHERE `id`=?";

并检查是否有错误,这可能会给你带来一些麻烦。

关于javascript - 发布在 Ajax 中无法将输入保存到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35773216/

相关文章:

php - 如何调试此错误 : Property "CDbAuthManager.connectionId" is not defined

JavaScript 嵌套循环

javascript - ES6 代码风格最佳实践

javascript - 传单/ map 盒 : Geolocation zoom

javascript - 通过ajax传递时 header 不会重定向

php - 为什么这个 Canvas 不显示?

javascript - 继承类的不同返回类型

PHP连接Hotmail发送邮件?

jQuery .data() 不更新 HTML5 数据属性

javascript - 如何扩展 jQuery Accordion 插件