juppix: Wieder mal: Problem mit JSON/Ajax

Beitrag lesen

Hi zusammen,

ich habe (mal wieder) ein Problem(chen) mit meinem JSON-"Freund"! Da Ihr so perfekt unterstützt frage ich einfach mal wieder an...:

Ich möchte den "Bootstrap year calendar" an eine PHP-Ajax-Datenquelle "anhängen" (JSON denke ich mal).

Der Kalender wird wie folgt initialisiert:

  $('#calendar').calendar({ 
        enableContextMenu: true,
        enableRangeSelection: true,
        …
        …
        dataSource: [
            {
                id: 0,
                name: 'Google I/O',
                location: 'San Francisco, CA',
                startDate: new Date(currentYear, 4, 28),
                endDate: new Date(currentYear, 4, 29)
            },
            {
                id: 1,
                name: 'Microsoft Convergence',
                location: 'New Orleans, LA',
                startDate: new Date(currentYear, 1, 16),				
                endDate: new Date(currentYear, 1, 16)
            },
           …
           …

Nun gibt es beim Googeln auch viele Infos um den Kalender an AJAX anzubinden, z. B.: https://github.com/Paul-DS/bootstrap-year-calendar/issues/21

... aber ich kriege es wieder einfach nicht hin.

Soweit bin ich bereits (wie bei dem Link oben erklärt):

           …
           …
            },
            {
                id: 9,
                name: 'LA Tech Summit',
                location: 'Los Angeles, CA',
                startDate: new Date(currentYear, 10, 17),
                endDate: new Date(currentYear, 10, 17)
            }
        ],
		yearChanged: function(e) {		
		
			e.preventRendering = true;			

			$(e.target).append('<div style="text-align:center"><img src="./img/loading_spinner.gif" /></div>');

			$.ajax({ 
				url: "./calendar_data_test.php", 
				success: function(dataSource) {  
					$(e.target).data('calendar').setDataSource(dataSource);
				} 
			});
			
		}
	});

Und hier der Inhalt meiner PHP-Datei, welche das JSON zurück geben soll (dann in Zukunft aus einer mySQL... aber erst wenns grundsätzlich klappt ;-) ...:

<?php
$out = array();

 for($i=1; $i<=15; $i++){     //from day 01 to day 15
    $data = date('Y-m-d', strtotime("+".$i." days"));
    $out[] = array(  
		'id' => $i,
        'name' => 'Event name '.$i,
		'location' => 'location',
        'startDate' => '2018-05-01',
        'endDate' => '2018-05-20'
    );
}

echo json_encode($out);
exit;
?>

Wie gesagt: Kein Fehler wird geworfen aber es gibt halt auch keine schönen Kalendereinträge 😕

Ich weiß nicht mal, ob das Datumsformat so passt welches das PHP zurück liefert. Der Kalender erwartet in Javascript ja ein "new Date(2018, 10, 17)".

Mein PHP liefert folgende Ausgabe (sieht für mich erst mal "gut" aus und der Browser rendert es auch korrekt als JSON):

[
 {
  id: 1,
  name: "Event name 1",
  location: "location",
  startDate: "2018-05-01",
  endDate: "2018-05-20"
 },
 {
  id: 2,
  name: "Event name 2",
  location: "location",
  startDate: "2018-05-01",
  endDate: "2018-05-20"
 },]

Freunde, ich bin über jede Hilfe extreeem dankbar!

Liebe Grüße! jup

PS: Der downloadbare Kalender-Code von www.bootstrap-year-calendar.com enthält das Event "yearChange" noch nicht. Ich habe mir die aktuelle Kaleder-Version von o.g. Github-Seite gezogen und diese hat das Event.

akzeptierte Antworten