fullCalendar.js defaultView:'agendaDay'显示全天部分的事件

时间:2014-01-07 11:14:20

标签: javascript jquery mysql json fullcalendar

将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的工作小提琴:事件:

http://jsfiddle.net/sebababi/g5gtG/1/

要进行测试,您需要更改事件:在jsFiddle中: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);

非常感谢帮助我走上正轨的任何帮助。

1 个答案:

答案 0 :(得分:0)

好的,我向你的JsFiddle添加了一些代码,以显示按钮prev,next:

<强> 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: '&lt;',
    next: '&gt;'
},
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。