使用fullCalendar.js和defaultView作为agendaDay,并从mysql获取JSON形式的事件。错误是它在"全天"部分显示事件。
我试过这个:
eventRender: function(event, element, view) {
if (event.allDay == 1) {
event.allDay = true;
} else {
event.allDay = false;
}
我也试过:
eventRender: function(event, element, view) {
event.allDay = false;
},
还有这个:
eventAfterAllRender: function(event, element, view) {
event.allDay = false;
},
但我是股票,仍然没有工作。
这是一个没有JSON的WORKING fiddle:events:
http://jsfiddle.net/sebababi/g5gtG/1/
要进行测试,您需要在jsFiddle for中更改事件:events:"events.php",
这是events.php文件
<?php
// List of events
$json = array();
// Query that retrieves events
$requete = "SELECT * FROM evenement ORDER BY id";
// connection to the database
try {
$bdd = new PDO('mysql:host=localhost;dbname=fullcalendar', 'root', 'root');
} catch(Exception $e) {
exit('Unable to connect to database.');
}
// Execute the query
$resultat = $bdd->query($requete) or die(print_r($bdd->errorInfo()));
// sending the encoded result to success page
echo json_encode($resultat->fetchAll(PDO::FETCH_ASSOC));
?>
这是mysql表
CREATE TABLE `evenement` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) COLLATE utf8_bin NOT NULL,
`start` datetime NOT NULL,
`end` datetime DEFAULT NULL,
`url` varchar(255) COLLATE utf8_bin NOT NULL,
`allDay` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=34 ;
INSERT INTO `evenement` (`id`, `title`, `start`, `end`, `url`, `allDay`) VALUES
(24, 'testing defaultView with agendaDay and JSON event', '2014-01-07 08:30:00', '2014-01-07 09:30:00', '', 1);
如果能帮我走上正轨,我们将不胜感激。
好的,我在JsFiddle中添加了一些代码,以显示上一个按钮,下一个按钮:
HTML
<input type="button" value="prev" id="prevbutton" />
<input type="button" value="next" id="nextbutton"/>
<div id='calendar'></div>
JS
var calendar = $('#calendar').fullCalendar({
defaultView: 'agendaDay',
header: {
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
editable: true,
year: 2014,
month: 0,
day:7,
buttonText: {
prev: '<',
next: '>'
},
events: [
{
title: 'testing defaultView with agendaDay and JSON event',
start: '2014-01-07 11:00',
allDay: false
}
]
});
$('#prevbutton').click(function() {
calendar.fullCalendar('prev');
});
$('#nextbutton').click(function() {
calendar.fullCalendar('next');
});
现在,对于JSON,您必须在PHP中进行管理,以获得类似的JSON字符串
[{"id":"24","title":"testing with defaultView: agendaDay, not showing in Day","start":"2014-01-09 08:30:00","end":"2014-01-09 09:30:00","url":"","allDay":false}]
使用
var_dump(json_decode($json));
查看您的字符串是否正确,并且您必须在PHP中而不是在客户端从DATABASE转换allDay的0和1值。
编辑
下面的对话。。。
Sebastian,你误解了我的观点,那就是让你在PHP中获得PDO::FETCH_ASSOC的内容,并将其转换为一个普通的PHP关联数组,在构建普通PHP数组时,正是在这种转换方式下,你会更改allDay的值。
基于该链接,您可以访问返回的行,该行实际上是一个关联数组,就像我们在PHP中所知道的那样,并将allDay值从0更改为false。
只有这样,您才能使用json_encode()并将其发送回fullcalendar。