FullCalendar: événements ne pas restitués initialement à partir d’un appel de fonction (AJAX)

J’ai configuré mon FullCalendar pour extraire ses événements d’une requête AJAX, mais ils ne sont pas affichés dans l’agenda lors du premier chargement de la page.

$(document).ready(function() { sh1client = new Array(); sh2client = new Array(); $('#sh1_cal').fullCalendar({ height: 1000, minTime:'9:00am', maxTime:'5:00pm', editable: false, events: function(start, end, callback) { $.ajax({ type: 'GET', url: 'http://localhost:8080/getEvents', dataType: 'json', success: function(reply) { console.log(reply.first); callback(reply.first); } }); } }); $("#sh1_cal").fullCalendar('addEventSource', sh1client); // these are the clientside arrays }); 

Et sur le serveur,

 app.get('/getEvents', function(req, res){ console.log('Server: passing events...'); var arrays = {first: sh1, second: sh2} var pack = JSON.ssortingngify(arrays) res.writeHead(200, {'Access-Control-Allow-Origin' : '*', 'Content-Type': 'application/json'}); res.end(pack); }); 

Y a-t-il une raison pour laquelle ces événements ne se chargeraient pas initialement? Tout semble être passé correctement, mais c’est comme si le rappel ne fonctionnait pas ou quelque chose du genre.

EDIT: Voici une autre approche, j’ai essayé

 events: { url: 'http://localhost:8080/getEvents', type: 'GET', error: function() { alert('there was an error while fetching events!'); }, success: function(reply) { console.log(reply); //callback(reply.first); }, color: 'yellow', // a non-ajax option textColor: 'black' // a non-ajax option } 

EDIT : la console JavaScript indique que cela est POSTé à la page dès son chargement (il s’agit du premier object d’un tableau:

 [Object] allDay: "false" end: "1392129000" id: "[email protected]" room: "Sh1" start: "1392127200" title: "Phil - Google" __proto__: Object length: 1 __proto__: Array[0] 

Au lieu d’utiliser votre propre appel ajax, avez-vous essayé d’utiliser des calendriers complets?

http://arshaw.com/fullcalendar/docs/event_data/events_json_feed/

Fullcalendar définit par défaut le type de données data comme JSON et la mise en cache sur false.

Combiné une partie de votre code avec le code de doc:

 $('#calendar').fullCalendar({ events: { url: 'http://localhost:8080/getEvents', type: 'GET', error: function() { alert('there was an error while fetching events!'); }, success: function(reply) { console.log(reply.first); callback(reply.first); }, color: 'yellow', // a non-ajax option textColor: 'black' // a non-ajax option } }); 

Vous pouvez essayer de simplement couper et coller votre chaîne JSON et voir si vous pouvez effectuer le rendu sans appel ajax.

  events: [ { end: 1392129000, id: "[email protected]", room: "Sh1", start: 1392127200, title: "Phil - Google" }] 

Vous pouvez également traiter la réponse:

 $('#myCalendar').fullCalendar({ ... eventSources : [{ url: 'myUrl', type: 'GET', }, success: function(replyObject) { var results = []; var reply= replyObject.Results[0]; for(var index in reply) { results.push(reply[index]); } return results; } }] ...