FullCalendar应用——读取JSON数据

原创文章 作者:月光光 2013年09月21日 19:24helloweba.com 标签:jQuery  Fullcalendar 

开发者可以使用FullCalendar创建强大的日历日程应用,FullCalendar提供了丰富的选项设置和方法调用,使得开发者可以轻松的创建各种功能的日历程序。本文将结合实例使用PHP读取MySQl数据,显示在FullCalendar日历中。

根据FullCalendar日历插件说明文档中的介绍,日历主体事件数据的来源有三,一是直接以javascript数组的形式显示日历事件,二是获取JSON数据形式显示日历事件,三是函数回调的形式显示日历数据,三种调用数据的方式各有所用之处,通常我们在实际项目中会结合数据库,通过PHP等后台语言来读取数据库的数据,并以json格式返回给前端,FullCalendar再处理接收的json数据显示在日历中。

HTML

一切像前面文章:日程安排FullCalendar介绍的一样,在页面中载入必要的javascript和css文件。

<link rel="stylesheet" type="text/css" href="css/fullcalendar.css">
<script src="js/jquery-1.9.1.min.js"></script>
<script src="js/jquery-ui-1.10.2.custom.min.js"></script>
<script src="js/fullcalendar.min.js"></script>

然后,在页面的body里加入div#calendar,用来放置日历主体。

<div id='calendar'></div>

jQuery

我们用以下代码调用FullCalendar,保存后浏览,我们可以看到页面中呈现一个漂亮的日历表,但是日历中没有具体的事件内容,我们使用FullCalendar最主要的是要在FullCalendar中展示日程安排中的事件,给用户直观的展示过去或未来时间内安排的事情。FullCalendar中的事件数据来源在events选项控制,当然如果是有多个数据来源可以使用eventSources选项。

$(function() {
	$('#calendar').fullCalendar({
		header: {//设置日历头部信息
			left: 'prev,next today',
			center: 'title',
			right: 'month,agendaWeek,agendaDay'
		},
		firstDay:1,//每行第一天为周一
		editable: true,//可以拖动
		events: 'json.php'	//事件数据
	});
});

PHP

从jQuery代码中我们可以看出,FullCalendar所有事件数据来自于json.php。json.php通过连接后台MySQL数据库,读取符合条件的事件数据,并最终以JSON数据格式的形式返回,请看代码:

include_once('connect.php');//连接数据库

$sql = "select * from calendar";
$query = mysql_query($sql);
while($row=mysql_fetch_array($query)){
	$allday = $row['allday'];
	$is_allday = $allday==1?true:false;
	
	$data[] = array(
		'id' => $row['id'],//事件id
		'title' => $row['title'],//事件标题
		'start' => date('Y-m-d H:i',$row['starttime']),//事件开始时间
		'end' => date('Y-m-d H:i',$row['endtime']),//结束时间
		'allDay' => $is_allday, //是否为全天事件
		'color' => $row['color'] //事件的背景色
	);
}
echo json_encode($data);

值得一提的是,在返回的json数据中,每个字段如id,title..对应着FullCalendar的Event Object事件对象中的属性id,title..。

我们将最终数据以json_encode()输出,然后,前端FullCalendar会解析json数据并显示在日历中,这些FullCalendar都替我们做好了,只管刷新前端页面看下效果吧。

FullCalendar的读取数据操作很简单,接下来我们会讲述如何在FullCalendar日历中新增、修改和删除事件,敬请关注。

最后附上demo中的MySQL数据表calendar的表结构:

CREATE TABLE IF NOT EXISTS `calendar` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(100) NOT NULL,
  `starttime` int(11) NOT NULL,
  `endtime` int(11) DEFAULT NULL,
  `allday` tinyint(1) NOT NULL DEFAULT '0',
  `color` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8
声明:本文为原创文章,helloweba.net和作者拥有版权,如需转载,请注明来源于helloweba.net并保留原文链接:https://www.helloweba.net/javascript/232.html

44条评论

  • 董董

    大佬,请问下有 java 版本的嘛 我邮箱1242778300@***.com,先行拜谢!

  • -

    各位在座的大佬谁有java版本的给小弟发一份要eclipce的1795931321@***.com,谢谢。

  • 自招

    求一份eclipce的,2300826052@***.com,谢谢啊

  • xiaocase

    @海晴能发给我一份吗?,有急用!谢谢了

  • lol

    函数回调的形式怎么显示日历数据

  • lol

    函数回调的形式怎么显示日历数据

  • IT。老大

    最新项目,求一分eclipce的,942539456@***.com,谢谢啊

  • 最近我也需要这个,你有吗,做好了吗,可以发一份吗,1073495300@***.com谢谢

  • 请问你的那个日历的做好了吗,有的话可以给我吧,谢谢1073495300@***.com

  • 楼主有javaee版本的吗,可以发一下吗1073495300@***.com谢谢

  • 大神 给个java版的吧 谢谢了 791996631@***.com

  • 你好,最近在做Java项目用到,可以发一份代码么,谢谢大神啦。guo5283796@163.com

  • 我这边没有Java版本的

  • 您好,这插件是不是必须是用php写的数据库才能用,想问下能有java版本的吗

  • 大神现在有java版本吗?

  • 大神,现在项目中需要一个JAVA版本的,能麻烦你给发一份吗?邮箱18810593420@163.com

  • 大神给一个吧,1429766640@***.com多谢了

  • [爱你]大神能发我邮箱么?Pluto_way@***.com

  • 怎么获取后台返回的数据呢?

  • 顺带说下。。j2ee版本带增删改查拖动 不过弹窗用的是layer(原来的有点样式冲突 囧)