Ich glaube, ich bin etwas fehlt. Ich habe den Vollkalender eingerichtet und die Standardversion funktioniert, aber ich füge jetzt meinen eigenen JSON hinzu, und das ist es nicht.FullCalendar JSON nicht Kalender bevöl
-Code in der Kalenderseite ist
$(document).ready(function() {
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay,listWeek'
},
defaultDate: '2017-09-12',
editable: true,
navLinks: true, // can click day/week names to navigate views
eventLimit: true, // allow "more" link when too many events
events: {
url: 'php/get-events.php',
error: function() {
$('#script-warning').show();
}
},
loading: function(bool) {
$('#loading').toggle(bool);
}
});
});
Ich lerne, wie JSON zu codieren, wie ich entlang gehen, und ich fand ein Tutorial online, die mir einige Code gab, die zu funktionieren scheint. Ich habe den ursprünglichen Code in get-events.php geändert wie folgt (Code-Schnipsel mit DB Details herausgenommen) zu lesen ...
// Require our Event class and datetime utilities
require dirname(__FILE__) . '/utils.php';
// Short-circuit if the client did not give us a date range.
if (!isset($_GET['start']) || !isset($_GET['end'])) {
die("Please provide a date range.");
}
// Parse the start/end parameters.
// These are assumed to be ISO8601 strings with no time nor timezone, like "2013-12-29".
// Since no timezone will be present, they will parsed as UTC.
$range_start = parseDateTime($_GET['start']);
$range_end = parseDateTime($_GET['end']);
// Parse the timezone parameter if it is present.
$timezone = null;
if (isset($_GET['timezone'])) {
$timezone = new DateTimeZone($_GET['timezone']);
}
class Emp {
public $id = "";
public $title = "";
public $start = "";
public $url = "";
}
while(!$JAN->atEnd()) {
e = new Emp();
$e->id = $JAN->getColumnVal("ID");
$e->title = $JAN->getColumnVal("TITLE");
$e->start = $JAN->getColumnVal("DATE")."T".$JAN->getColumnVal("TIME");
$e->url = "meeting_info.php?ID=".$JAN->getColumnVal("ID");
echo json_encode($e);
$JAN->moveNext();
}
$JAN->moveFirst(); //return RS to first record
// Read and parse our events JSON file into an array of event data arrays.
$json = file_get_contents(dirname(__FILE__) . '/../json/events.json');
$input_arrays = json_decode($json, true);
// Accumulate an output array of event data arrays.
$output_arrays = array();
foreach ($input_arrays as $array) {
// Convert the input array into a useful Event object
$event = new Event($array, $timezone);
// If the event is in-bounds, add it to the output
if ($event->isWithinDayRange($range_start, $range_end)) {
$output_arrays[] = $event->toArray();
}
}
// Send JSON to the client.
echo json_encode($output_arrays);
Wenn ich die get-events.php
Seite auf seine eigene betreibe ich bekommen, was ich nehme an wird ein korrekt codierter JSON zurückgegeben, ein Beispiel im Array ist ...
{"id":20,"title":"Executive Committee Meeting","start":"2017-05-01T00:00:00","url":"meeting_info.php?ID=20"}
Kann mir jemand sagen, was ich falsch gemacht habe?
Sie müssen json_encode() auf einem vollständigen Array von PHP-Objekten ausführen, nicht auf jedem einzeln. Fügen Sie in Ihrer Schleife jedes Emp zu einem Array hinzu und codieren Sie dann das Array, wenn die Schleife endet. Wenn Sie auf der Registerkarte Netzwerk Ihres Browsers nach dem Ergebnis Ihrer ajax-Anfrage suchen, werden Sie wahrscheinlich eine Reihe einzelner Objekte sehen, die jedoch nicht in Array-Klammern eingeschlossen und nicht durch Kommas getrennt sind, was bedeutet, dass JSON ungültig ist . Es gibt auch eine gute Chance, es gibt eine Fehlermeldung in der Konsole auch über das ungültige Datenformat – ADyson
@ADyson es als Antwort gibt! :-) –
@Don'tPanic guter Punkt, ich sollte wirklich, ich bin 99% sicher, das ist die Antwort. Erledigt! – ADyson