Привет! Я использую fullCalendar 1.5.1 и создал PHP-запрос, который возвращает почти все, что я хочу использовать в календаре.Это интегрированная система, поэтому мне пришлось переключиться на _ASSOC, чтобы вернуть только ассоциативный массив MySQLi:
<?php
global $json_result;
global $myqueryresult;
$GLOBALS["ADODB_FETCH_MODE"] = ADODB_FETCH_ASSOC;
$myquery = "SELECT id, title, eventstart, eventend FROM View1";
$myqueryresult = $GLOBALS["conn"]->GetAll($myquery);
$json_result = json_encode($myqueryresult);
$GLOBALS["ADODB_FETCH_MODE"] = ADODB_FETCH_BOTH;
?>
... за исключением того, что он не будет принимать данные, поскольку ключ в ключе / значениипары указаны (согласно стандартам JSON, поэтому я прочитал).
Если я просто введу результирующий массив MySQL, Javascript просто отобразит данные как «Массив».Если я использую json_encode () в массиве, я получаю то, что выглядит как правильный объект JSON, но он не работает с fullCalendar из-за цитирования ключей.
Вот мой jQuery для полного календаря:
$(document).ready(function() {
$('#calendar').fullCalendar({
height: 600,
firstDay: 6,
theme: true,
year: 2012,
month: 0,
date: 7,
minTime: 6,
maxTime: 23,
startParam: 'eventstart',
endParam: 'eventend',
defaultView: 'agendaWeek',
allDaySlot: false,
slotMinutes: 15,
events: <?php echo $json_result; ?>
// put your options and callbacks here
})
});
Вот сгенерированный источник HTML, если я использую массив MySQL для $ json_result:
$(document).ready(function() {
$('#calendar').fullCalendar({
<...snip...>
slotMinutes: 15,
events: Array
// put your options and callbacks here
})
});
А вотрезультат, если я использую json_encode ($ thesamearray)
$(document).ready(function() {
<...snip...>
events: [{"id":"51","title":"Ship in Miami, Florida","eventstart":"2012-01-07 07:00:00","eventend":"2012-01-07 15:00:00"},{"id":"547","title":"Miami, Florida","eventstart":"2012-01-14 07:00:00","eventend":null}]
// put your options and callbacks here
})
});
Как я могу настроить это так, чтобы оно работало как массив в fullCalendar?Кажется, он не хочет брать строку JSON или массив, по крайней мере в том формате, в котором массив находится сейчас из PHP.
Спасибо, Крис
РЕШЕНИЕ:
Псевдоним поля MySQL:
<?php
global $json_result;
$GLOBALS["ADODB_FETCH_MODE"] = ADODB_FETCH_ASSOC;
$myquery = "SELECT id, title, eventstart AS start, eventend AS end FROM View1";
$myqueryresult = $GLOBALS["conn"]->GetAll($myquery);
$json_result = json_encode($myqueryresult);
$GLOBALS["ADODB_FETCH_MODE"] = ADODB_FETCH_BOTH;
?>
Также настроил jQuery для удаления моих start / endparams и изменил allDaySlot на allDayDefault:
$(document).ready(function() {
$('#calendar').fullCalendar({
height: 600,
firstDay: 6,
theme: true,
year: 2012,
month: 0,
date: 7,
minTime: 6,
maxTime: 23,
defaultView: 'agendaWeek',
allDayDefault: false,
slotMinutes: 15,
events: <?php echo $json_result; ?>
// put your options and callbacks here
})
});
Теперь, еслиЯ мог только найти способ заставить его показать 8-дневную горизонтальную повестку дня, мои проблемы могли быть закончены!Спасибо всем за советы.