使用Sql Server和PHP在jQuery Full日历中添加和加载事件的问题

我在我的项目中使用了 jQuery 完整日历。我的事件存储在 MS SQL Server 表(事件)中,我以“json”格式获取数据,但它没有呈现到完整日历中,事件也没有添加到表中... . 请任何机构可以帮助我....


CREATE TABLE events (

  id  NUMERIC IDENTITY(1,1) NOT NULL,

  title varchar(255) NOT NULL,

  start_event datetime NOT NULL,

  end_event datetime NOT NULL,

  CONSTRAINT [PK_events] PRIMARY KEY CLUSTERED

  ( 

 id ASC 

 )

)


INSERT INTO events(title,start_event,end_event) VALUES

('meeting1', '2019-07-31 00:00:00', '2019-07-31 00:00:00'),

('meeting2', '2019-08-09 00:00:00', '2019-08-09 00:00:00');

应用程序/视图/index.php:


$(document).ready(function() {

   var calendar = $('#calendar').fullCalendar({

    editable:true,

    header:{

     left:'prev,next today',

     center:'title',

     right:'month,agendaWeek,agendaDay'

    },

    events: {

      url : '<?php echo site_url('Home/load');?>',

      error: function() 

            {

                alert("error");

            },

      success: function()

            {

                console.log("successfully loaded");

            }

    },

    selectable:true,

    selectHelper:true,

    select: function(start, end, allDay)

    {

     var title = prompt("Enter Event Title");

     if(title)

     {

      var start = $.fullCalendar.formatDate(start,"Y-MM-DD HH:mm:ss");

      var end = $.fullCalendar.formatDate(end, "Y-MM-DD HH:mm:ss");

      $.ajax({

       url:"<?php echo site_url('Home/valid_calendar');?>",

       type:"POST",

       data:{title:title, start:start, end:end},

       success:function()

       {

        calendar.fullCalendar('refetchEvents');

        alert("Added Successfully");

       }

      })

     }

    },

应用程序/视图/load.php:


$timezone = new DateTimeZone("UTC");


$sql = "select * from events";


$stmt = sqlsrv_query($conn,$sql);


if($stmt == false)

{

    die(print_r(sqlsrv_errors(),true));

}


翻阅古今
浏览 147回答 1
1回答

Smart猫小萌

您为事件提供的属性名称不正确。更仔细地研究事件对象文档。您已提供事件start_event和end_event属性,但 fullCalendar 期望日期字段为start和end。您不能仅仅发明属性名称并期望 fullCalendar 猜测您如何称呼它们;它们必须与文档中给出的名称匹配,以便它知道在哪里查找。错误信息是 fullCalendar/momentJS 找不到定义的start属性来检查它是否有时间组件。我希望将您的 PHP 更改为$data[] = array(&nbsp; 'title' => $row['title'],&nbsp; 'start' => $row['start_event']->format("Y-m-d H:i:s"),&nbsp; 'end' => $row['end_event']->format("Y-m-d H:i:s"));应该可以解决您的问题。PS作为一个独立的点,你提到的是,当你打电话的/Home/loadURL,以获取事件,作为URL结束了http://localhost/calendar_sql/index.php/Home/load?start=2019-06-30&end=2019-08-11&_=1564490059946与start=2019-06-30&end=2019-08-11添加到它。这是预期的。根据事件作为 JSON 提要文档fullCalendar 会在它联系您的服务器以获取事件数据时自动将这些参数附加到 URL。这个想法是你的服务器应该读取这些 GET 值并使用它们来过滤事件列表,只返回那些在这些日期内发生的事件。这将使 AJAX 调用更加高效,这样您就不会为用户未查看的其他日期返回大量事件。缴费灵echo json.parse($data);我认为这是您上面代码中的错字?除非您编写或导入了一些自定义代码,否则json.parse在 PHP 中没有这样的功能(并且解析在这里没有意义,您将编码(即创建)JSON,而不是解析(即读取)它。我希望这一行应该读echo json_encode($data);那是你真正的代码吗?
打开App,查看更多内容
随时随地看视频慕课网APP