Impossible de lire la propriété 'hasTime' undefined
Je suis en utilisant FullCalendar pour afficher les heures de travail du personnel sur un Calendrier.
Je suis en tirant les événements par le biais d'un appel ajax comme suit:
"events": function(start, end, timezone, callback) {
//create the data to be sent
var objectToSend = {
"start_date": start.format("YYYY-MM-DD"),
"finish_date": end.format("YYYY-MM-DD"),
};
//craft and make the request
$.ajax({
url: 'calendar/test',
data: objectToSend,
type: 'POST',
cache: false
}).done(function(data) {
//on success call `callback` with the data
callback(data)
})
}
Cela fonctionne parfaitement bien, mais j'obtiens une erreur affiche dans ma console "Uncaught TypeError: Cannot read property 'hasTime' undefined" et que cela est à venir à partir de fullcalendar.min.js:6
.
Je ne suis pas très à l'aise en JavaScript, mais ma recherche suggère que soit je n'ai pas fourni la bonnes dates ou ont données inutiles là.
Aussi loin que je peux dire que je suis en fournissant toutes les données. La fonction de génération de données ressemble à ceci:
public function test(Request $request) {
$start_date = Input::get('start_date');
$finish_date = Input::get('finish_date');
$shifts = Roster::whereBetween('date', array($start_date, $finish_date)) - > get();
foreach($shifts as $shift) {
$start = $shift - > date.
' '.$shift - > start_time;
$finish = $shift - > date.
' '.$shift - > finish_time;
$events[] = array(
'title' => $shift - > staff - > first_name,
'start' => Carbon::createFromFormat('Y-m-d H:i:s', $start) - > toDateTimeString(),
'end' => Carbon::createFromFormat('Y-m-d H:i:s', $finish) - > toDateTimeString(),
'id' => $shift - > id,
'allDay' => false
);
}
return json_encode($events);
}
sorties:
[{"title":"Gemma","start":"2016-02-01 18:00:00","end":"2016-02-01 22:00:00","id":1,"allDay":false},
{"title":"Gemma","start":"2016-01-26 18:00:00","end":"2016-01-26 22:00:00","id":49,"allDay":false}]
Quelqu'un peut repérer ce que je fais de mal? Je suis simplement en train d'essayer de l'utiliser pour rendre ma événements pour le mois donné.
Edit: sortie de la console.log(data)
Il imprime:
[Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object]
L'ouverture de ce que je reçois:
0: Object
L'ouverture de ce que je reçois:
allDay: false
end: "2016-02-01 22:00:00"
id: 1
start: "2016-02-01 18:00:00"
title: "Gemma"
- montrer
callback
fonction .. - J'essaie juste de suivre ce fullcalendar.io/docs/event_data/events_function vous ne savez pas où la fonction de rappel est? À l'exception plutôt que de donner une réponse au format XML, je suis en fournissant comme JSON.
- ok, essayez de remplacer
callback(data)
àcallback(data[0])
- pourriez-vous fournir de la console.log(data) avant d'appeler le callback dans
done
d'une fonction - Juste essayé, j'obtiens la même erreur.
- sortie de
console.log(data)
ajouté. Il y a plus d'objets que j'ai fourni seulement deux dans mon exemple de sortie. - Essayez de changer le format de la date: actuellement, le début et la fin est
"2016-02-01 18:00:00"
format dans la prochaine façon"2016-02-01T18:00:00"
(ajouterT
avant l'heure), qui pourrait entraîner une défaillance lors de la construction de date danscallback
méthode - Il n'a pas besoin de la T que je peux construire les événements très bien sans elle. Par exemple, si je créer manuellement les événements avec la sortie d'exemple, qui est le même que ce que je reçois de chaque objet, il fonctionne. Cependant, je vais essayer d'ajouter de la T peu de temps
- ok, ce qui est sur le remplacement de
done
de rappel àsuccess
aussi, vous pouvez définirsuccess
bien que dans les exemples sur fullCalendar page officielle
Vous devez vous connecter pour publier un commentaire.
Il me semble que vous donnez à
fullCalendar
mal de l'événement paramètre,Essayer de rendre certains manuellement tout d'abord les événements.
Après cela, assurez-vous que vos événements match avec fullCalendar devrait params.
[{"title":"Gemma","start":"2016-02-01 18:00:00","end":"2016-02-01 22:00:00","id":1,"allDay":false}]
montre l'événement avec succès.jQuery.parseJSON()
?[{"title":"Gemma","start":"2016-02-01 18:00:00","end":"2016-02-01 22:00:00","id":1,"allDay":false}, {"title":"Gemma","start":"2016-01-26 18:00:00","end":"2016-01-26 22:00:00","id":49,"allDay":false}];
fullCalendar
devrait être en mesure d'analyser vos événements, assurez-vous que votrecallback()
fonction est définie et retourJSON.parse(data)
au lieu dedata
.Je ne pouvais pas comprendre ce qui n'allait pas avec le code ci-dessus, cependant, je dois le contourner en utilisant un flux JSON au lieu:
J'ai eu ce bug avec la fonction suivante
Et j'ai trouvé que c'était parce que j'ai essayé de transmettre l'événement sur le post() fonction. Il n'a pas d'importance si j'ai changé le nom, dès que je l'ai adoptée, je pense qu'il a essayé de le sérialiser, et il a entraîné dans l'erreur. Maintenant, je suis en spécifiant manuellement et de l'objet, où je "clone" à la id, de début et de fin, comme je n'ai pas besoin de rien d'autre de toute façon.
Utilisation:
JSON.parse(data)
en reponse ajax.