#ajax #laravel #fullcalendar
#ajax #laravel #полный календарь
Вопрос:
Я пытаюсь отобразить события из базы данных в календаре, но я получаю
alert('failed')
вызывайте каждый раз.
Пожалуйста, кто-нибудь, помогите мне решить эту проблему. Я застрял здесь.
вот код моего скрипта:
$.ajax({
url:'events',
type: "GET",
cache: false,
datatype: 'json',
success: function(data){
alert('Hello');
$.each(data, function(index, val){
events.push({
title: val.name,
start_date: val.start_date,
end_date: val.end_date,
start_time: val.start_time,
end_time: val.end_time,
location:val.location,
description: val.description,
timezone:val.timezone,
alldDay: val.isFullDay
});
})
GenerateCalendar(events);
},
error : function(error){
alert('Failed');
}
});
function GenerateCalendar(events){
$('#calendar').fullCalendar('destroy');
$('#calendar').fullCalendar({
contentHeight: 400,
defaultDate: new Date(),
timeFormat:'h(:mm)a',
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
eventLimit: true,
eventColor: '#378006',
events: events
});
}
Функция контроллера:
public function getEvents()
{
$events = Event::all();
return response()->json(['data'=> $events])->getData();
}
Заранее спасибо.
Комментарии:
1. не могли бы вы зарегистрировать свой
function(error)
error
параметр и просмотреть сообщение? что-то вродеconsole.log(error);
.2. где я должен разместить эту консоль. метод ведения журнала?
3. внутри вашего
function(error)
, после добавления, попробуйте открыть консоль браузера (F12), затем обновите страницу. по крайней мере, мы получим сообщение об ошибке, чтобы проверить, в чем была проблема.4. также может быть полезно открыть вкладку Сеть в инструментах вашего браузера, обновить страницу и поискать вызов
/events
. Затем посмотрите на ответ — код состояния будет показан немедленно, а затем, если вы нажмете на этот вызов ajax и перейдете на вкладку Ответа, он покажет фактические данные, которые вернулись с сервера — возможно, произошла ошибка. Если вы все еще не уверены, что делать после того, как вы просмотрели эти фрагменты информации, пожалуйста, вставьте их сюда, чтобы мы могли помочь вам их интерпретировать.
Ответ №1:
Я вижу, что у вашего события есть атрибуты, start_date, end_date, start_time, end_time
я ничего не видел об этом в документации по полному календарю. насколько я знаю, fullcalendar ожидает, что у событий будет вызываемый атрибут start
, который является обязательным, и вызываемый необязательный end
Из документации по полному календарю:
start — дата / время начала события. Требуется. Ввод на мгновение, например, строка ISO8601. Во всем API это станет объектом real Moment.
Если вы хотите использовать JSON-канал для получения событий, нет необходимости выполнять свой собственный ajax-вызов. вы можете использовать свойство EventSource, и FullCalendar обработает выборку за вас
Комментарии:
1. все это верно, но это не привело бы к ошибке AJAX, о которой сообщается
2. да, Джон, ты прав, но могу ли я каким-либо образом добавить собственные пользовательские поля, подобные приведенным выше, чтобы я мог сохранять и извлекать их из базы данных?
3. @SohaIbAhmEd да, вы можете добавить столько пользовательских полей, сколько захотите. Полный календарь не удалит их. Но поле
start
обязательно. Таким образом, даже если ваш ajax-запрос не завершится ошибкой. календарь по-прежнему не будет отображать никаких событий, поскольку у них нет свойства start, необходимого календарю4. можете ли вы указать точное место, куда я могу их добавить?
5. вы можете добавить пользовательские поля в любом месте вашего объекта event. просто убедитесь, что событие также содержит обязательные поля