Friday, May 17, 2024
 Popular · Latest · Hot · Upcoming
167
rated 0 times [  172] [ 5]  / answers: 1 / hits: 18842  / 8 Years ago, tue, january 26, 2016, 12:00:00

I'm using FullCalendar to display staff hours on a Calendar.



I'm pulling the events via an ajax call like so:



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)
})
}


This works perfectly fine, however I am getting an error showing in my console Uncaught TypeError: Cannot read property 'hasTime' of undefined and that this is coming from fullcalendar.min.js:6.



I'm not very fluent in JavaScript, but my searching suggests that I either haven't provided the right dates or have junk data in there.



As far as I can tell I am providing all the right data. The function generating the data looks like so:



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);
}


which outputs:



[{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}]


Can anyone spot what I am doing wrong? I am simply trying to use this to render my events for the given month.



Edit: output of console.log(data)



It prints out:



[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]


Opening this up I get:



0: Object



Opening this up I get:



allDay: false
end: 2016-02-01 22:00:00
id: 1
start: 2016-02-01 18:00:00
title: Gemma

More From » jquery

 Answers
23

I couldn't figure out what was going wrong with the above code, however I got around it by using a JSON feed instead:



events: {
url: 'calendar/test',
error: function()
{
alert(error);
},
success: function()
{
console.log(successfully loaded);
}
}

[#63559] Saturday, January 23, 2016, 9 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
tobyl

Total Points: 598
Total Questions: 110
Total Answers: 114

Location: Vietnam
Member since Sat, Feb 12, 2022
2 Years ago
;