为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
翻阅古今 2021-11-05 13:04:53
我在我的项目中使用了 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));}
查看完整描述

1 回答

?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

您为事件提供的属性名称不正确。


更仔细地研究事件对象文档。您已提供事件start_event和end_event属性,但 fullCalendar 期望日期字段为start和end。您不能仅仅发明属性名称并期望 fullCalendar 猜测您如何称呼它们;它们必须与文档中给出的名称匹配,以便它知道在哪里查找。


错误信息是 fullCalendar/momentJS 找不到定义的start属性来检查它是否有时间组件。


我希望将您的 PHP 更改为


$data[] = array(

  'title' => $row['title'],

  'start' => $row['start_event']->format("Y-m-d H:i:s"),

  '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);

那是你真正的代码吗?


查看完整回答
反对 回复 2021-11-05
  • 1 回答
  • 0 关注
  • 145 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信