/ / Uncaught TypeError: obiekt nie jest funkcją (w wywołaniu zwrotnym AJAX) - javascript, jquery, ajax, fullcalendar

Uncaught TypeError: object nie jest funkcją (w wywołaniu zwrotnym AJAX) - javascript, jquery, ajax, fullcalendar

Próbuję zaktualizować obiekt FullCalendar za pomocą funkcji, która odbiera tablicę zdarzeń.

$("#sh1_cal").fullCalendar({

events: function(callback) {

$.ajax({
type: "GET",
url: "http://localhost:8080/getEvents",
dataType: "json",
success: function(reply) {

//var events = [];
console.log("printing " + reply.first)
alert(typeof reply.first);
callback(reply.first);

}
});
}
});

Odpowiedź ma być obiektem zawierającym dwatablice jako jego właściwości. Wyodrębniam pierwszy i wydaje się, że alert typeof zwraca poprawny typ, ale wywołanie zwrotne nie działa. Jakieś sugestie?

Odpowiedzi:

1 dla odpowiedzi № 1

Nie korzystałem z tej wtyczki, ale z dokumentów (http://arshaw.com/fullcalendar/docs/event_data/events_function/) wygląda na to, że funkcja zdarzeń przyjmuje 3 parametry: początek, koniec i oddzwonienie.

Początek i koniec to obiekty daty wskazujące, kiedywydarzenie zaczyna się i kończy. Tak jak teraz, funkcja ta uważa, że ​​istnieje obiekt daty o nazwie „callback”, dlatego otrzymujesz błąd. W JavaScript nazwa parametru nie jest ważna (na przykład możesz nazwać go „cb” lub „foo” zamiast „callback”), ale kolejność jest.

Spróbuj (untested):

$("#sh1_cal").fullCalendar({

events: function(start, end, callback) {
$.ajax({
type: "GET",
url: "http://localhost:8080/getEvents",
dataType: "json",
success: function(reply) {
callback(reply.first);
}
});
}
});

0 dla odpowiedzi nr 2

Spróbuj tego:

$("#sh1_cal").fullCalendar({
events: "http://localhost:8080/getEvents"
});

Nie powinno być potrzeby pisania własnego wywołania ajax, jest ono wbudowane.

Jeśli to nie działa, czy możesz opublikować dane wyjściowe kanału JSON?


0 dla odpowiedzi № 3

spróbuj tego i daj mi znać, czy to działa:

$("#sh1_cal").fullCalendar({

events: function(cb) {

$.ajax({
type: "GET",
url: "http://localhost:8080/getEvents",
dataType: "json",
success: function(reply) {
return cb(reply.first);
//or try:  cb(reply.first);

}
});
}(callback)
});

jeśli nie to, usuń zwrot z oddzwonienia.

pracował albo?

* Uwaga: Zakładam, że „callback” jest funkcją, którą przekazujesz i gdzieś ją utworzyłem.


0 dla odpowiedzi nr 4

Zdarzenie (jako funkcja) w pełnym kalendarzu zostało zmienione. Teraz trzecim parametrem jest strefa czasowa. Więcej informacji na temat Dokumentacja FullCalendar v2