Большую часть двух недель я копался в этом выпуске — не радуюсь, читая любые термины, которые я мог бы найти в поиске здесь и в Google (этот пост — последняя капля).
По сути, у меня есть код ниже, извлекающий данные через JSON из моей базы данных. Отображает событие, но в слоте «allDay». Чтобы помочь, я сделал var_dump из файла JSON, и это также ниже.
Может кто-нибудь увидеть, где / почему это не помещает события в их соответствующие временные интервалы?
var_dump из JSON:
object(PDOStatement)#2 (1) { ["queryString"]=> string(34) "SELECT * FROM heli_cal ORDER BY id" } [{"id":"000000000000001","title":"Test","start":"2014-10-19 16:30:00","end":"2014-10-19 17:00:00","url":"","allDay":"false"},{"id":"000000000000002","title":"James","start":"2014-10-23 09:00:00","end":"2014-10-23 17:00:00","url":"","allDay":"true"}]
JQuery (полный календарь):
<script>
$(document).ready(function() {
var date = new Date();
var d = date.getDate();
var m = date.getMonth();
var y = date.getFullYear();
var calendar = $('#calendar').fullCalendar({
allDayDefault: false,
editable: true,
defaultView: 'agendaWeek',
header: {
left: 'prev,next today',
center: 'title',
right: 'basicDay,agendaDay,agendaWeek,month',
},events: function(start, end, timezone, callback) {
JSON.parse($.ajax({
type: "GET",
url: "required/events.php",
async: false,
success: function(doc) {
var events = [];
$(doc).find('event').each(function() {
events.push({
id: $(this).attr('id'),
title: $(this).attr('title'),
start: $(this).attr('start'),
end: $(this).attr('end'),
allDay: $(this).attr('allDay')
});
});
callback(events);
}
}).responseText);
},
// Convert the allDay from string to boolean
eventRender: function(event, element, view) {
if (event.allDay === 'true') {
event.allDay = true;
} else {
event.allDay = false;
}
},
selectable: true,
selectHelper: true,
select: function(start, end, allDay) {
var title = prompt('Event Title:');
//var url = prompt('Type Event url, if exits:');
if (title) {
var start = $.fullCalendar.formatDate(start, "yyyy-MM-dd HH:mm:ss");
var end = $.fullCalendar.formatDate(end, "yyyy-MM-dd HH:mm:ss");
$.ajax({
url: 'actions/event_add.php',
data: 'title='+ title+'&start='+ start +'&end='+ end,
type: "POST",
success: function(json) {
alert('Added Successfully');
}
});
calendar.fullCalendar('renderEvent',
{
title: title,
start: start,
end: end,
allDay: allDay
},
true // make the event "stick");
}
calendar.fullCalendar('unselect');
},
editable: true,
eventDrop: function(event, delta) {
var start = $.fullCalendar.formatDate(event.start, "yyyy-MM-dd HH:mm:ss");
var end = $.fullCalendar.formatDate(event.end, "yyyy-MM-dd HH:mm:ss");
$.ajax({
url: 'actions/event_update.php',
data: 'title='+ event.title+'&start='+ start +'&end='+ end +'&id='+ event.id ,
type: "POST",
success: function(json) {
alert("Updated Successfully");
}
});
},
eventClick: function(calEvent, jsEvent, view) {
alert('Event: ' + calEvent.title + ' Start: ' + calEvent.start + ' Finish: ' + calEvent.end + ' allDay: ' + calEvent.allDay);
},
eventResize: function(event) {
var start = $.fullCalendar.formatDate(event.start, "yyyy-MM-dd HH:mm:ss");
var end = $.fullCalendar.formatDate(event.end, "yyyy-MM-dd HH:mm:ss");
$.ajax({
url: 'actions/event_update.php',
data: 'title='+ event.title+'&start='+ start +'&end='+ end +'&id='+ event.id ,
type: "POST",
success: function(json) {
alert("Updated Successfully");
}
});
}
});
});
</script>
JSON PHP:
<?php
// List of events
$json = array();
// Query that retrieves events
$query = "SELECT * FROM heli_cal ORDER BY id";
// connection to the database
try {
$bdd = new PDO('mysql:host=****;dbname=****', '****', '****');
} catch(Exception $e) {
exit('Unable to connect to database.');
}
// Execute the query
$result = $bdd->query($query) or die(print_r($bdd->errorInfo()));
// sending the encoded result to success page
echo json_encode($result->fetchAll(PDO::FETCH_ASSOC));
?>
Отладка:
[Object, Object] 0: ObjectallDay: "false"end: "2014-10-19 17:00:00"id: "000000000000001"start: "2014-10-19 16:30:00"title: "Test"url: ""__proto__: Object__defineGetter__: function __defineGetter__() {
[native code]
}
__defineSetter__: function __defineSetter__() {
[native code]
}
__lookupGetter__: function __lookupGetter__() {
[native code]
}
__lookupSetter__: function __lookupSetter__() {
[native code]
}
constructor: function Object() {
[native code]
}
hasOwnProperty: function hasOwnProperty() {
[native code]
}
isPrototypeOf: function isPrototypeOf() {
[native code]
}
propertyIsEnumerable: function propertyIsEnumerable() {
[native code]
}
toLocaleString: function toLocaleString() {
[native code]
}
toString: function toString() {
[native code]
}
valueOf: function valueOf() {
[native code]
}
get __proto__: function __proto__() {
[native code]
}
set __proto__: function __proto__() {
[native code]
}
1: ObjectallDay: "true"end: "2014-10-23 17:00:00"id: "000000000000002"start: "2014-10-23 09:00:00"title: "James"url: ""__proto__: Object__defineGetter__: function __defineGetter__() {
[native code]
}
__defineSetter__: function __defineSetter__() {
[native code]
}
__lookupGetter__: function __lookupGetter__() {
[native code]
}
__lookupSetter__: function __lookupSetter__() {
[native code]
}
constructor: function Object() {
[native code]
}
hasOwnProperty: function hasOwnProperty() {
[native code]
}
isPrototypeOf: function isPrototypeOf() {
[native code]
}
propertyIsEnumerable: function propertyIsEnumerable() {
[native code]
}
toLocaleString: function toLocaleString() {
[native code]
}
toString: function toString() {
[native code]
}
valueOf: function valueOf() {
[native code]
}
get __proto__: function __proto__() {
[native code]
}
set __proto__: function __proto__() {
[native code]
}
length: 2 __proto__: Array[0]
Задача ещё не решена.
Других решений пока нет …